33+ Monitoring & Stats Extensions for PostgreSQL

pg_stat_statements, pg_stat_monitor, pg_qualstats, hypopg, and other Postgres extensions for monitoring and query stats. Ranked by GitHub stars.

Last reviewed: May 15, 2026
33 extensions
1
powa
8190 30d

PostgreSQL Workload Analyser-core

Monitoring & Stats·PostgreSQL·Python
2

The pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL contrib module pg_stat_statements. pg_stat_monitor provides aggregated statistics, client information, plan details including plan, and histogram information.

Monitoring & Stats·BSD-3-Clause·C
3
pg_tracing
399+4 30d

Distributed Tracing for PostgreSQL

Monitoring & Stats·MIT·C
4
pg_qualstats
3310 30d

An extension collecting statistics about quals

Monitoring & Stats·BSD-3-Clause·C
5
pg_profile
306+3 30d

PostgreSQL load profile repository and report builder

Monitoring & Stats·BSD-2-Clause·C
6

Kernel statistics gathering

Monitoring & Stats·BSD-3-Clause·C
7

show query plans of all currently running SQL statements

Monitoring & Stats·PostgreSQL·C
8
pgsentinel
1880 30d

active session history

Monitoring & Stats·PostgreSQL·C
9

sampling based statistics of wait events

Monitoring & Stats·PostgreSQL·C
10
system_stats
168+1 30d

EnterpriseDB system statistics for PostgreSQL

Monitoring & Stats·PostgreSQL·C
11

track plan statistics of all SQL statements executed

Monitoring & Stats·BSD-3-Clause·C
12
pgnodemx
550 30d

Capture node OS metrics via SQL queries

Monitoring & Stats·Apache-2.0·C
13

Track settings changes

Monitoring & Stats·PostgreSQL·SQL
14

Small PostgreSQL background worker to report whether a node is a replication master or standby

Monitoring & Stats·PostgreSQL·C
15
pagevis
310 30d

Visualise database pages in ascii code

Monitoring & Stats·MIT·SQL
16
meta
240 30d

Normalized, friendlier system catalog for PostgreSQL

Monitoring & Stats·BSD-2-Clause·SQL
17

Log all the queries that reference a particular column

Monitoring & Stats·PostgreSQL·C
18
toastinfo
170 30d

show details on toasted datums

Monitoring & Stats·PostgreSQL·C
19
pgmeminfo
150 30d

show memory usage

Monitoring & Stats·MIT·C
20
pg_sqlog
70 30d

Provide SQL interface to logs

Monitoring & Stats·BSD-3-Clause·SQL
21

easily jump into a visual plan UI for any SQL query

Monitoring & Stats·PostgreSQL·Rust
22

Provides a means for logging execution plans of slow statements automatically

Monitoring & Stats·PostgreSQL·C
23

inspect the contents of database pages at a low level

Monitoring & Stats·PostgreSQL·C
24

examine the shared buffer cache

Monitoring & Stats·PostgreSQL·C
25

examine the free space map (FSM)

Monitoring & Stats·PostgreSQL·C
26

Logical decoding components inspection

Monitoring & Stats·PostgreSQL·C
27

Allow EXPLAIN to dump even more details

Monitoring & Stats·PostgreSQL·C
28

track planning and execution statistics of all SQL statements executed

Monitoring & Stats·PostgreSQL·C
29

examine the visibility map (VM) and page-level visibility info

Monitoring & Stats·PostgreSQL·C
30

functions to inspect contents of PostgreSQL Write-Ahead Log

Monitoring & Stats·PostgreSQL·C
31

show row-level locking information

Monitoring & Stats·PostgreSQL·C
32

show tuple-level statistics

Monitoring & Stats·PostgreSQL·C
33

information about SSL certificates

Monitoring & Stats·PostgreSQL·C

What is a PostgreSQL Monitoring Extension?

Monitoring extensions expose Postgres internals for performance analysis — query-level execution stats (pg_stat_statements, pg_stat_monitor), filesystem cache reads (pg_stat_kcache), predicate selectivity (pg_qualstats), wait events (pg_wait_sampling), buffer-pool contents (pg_buffercache), and hypothetical indexes for what-if analysis (hypopg). Together they're the foundation of any serious Postgres tuning effort and the data source for tools like PoWA, pganalyze, Datadog's Postgres integration, and AWS RDS Performance Insights.

When to Add a Monitoring Extension

Always enable pg_stat_statements — it's effectively required for any production Postgres deployment, surfaces the queries consuming the most time, and has near-zero overhead. Add pg_stat_monitor when you need time-bucketed query stats with histograms (Percona's enhanced replacement for pg_stat_statements). Add hypopg when you want to test an index without actually creating it — invaluable on large tables where CREATE INDEX takes hours. Skip the more niche stat extensions (pg_qualstats, pg_stat_kcache) until you have a specific performance problem that needs deeper instrumentation — they add overhead and noise to monitoring dashboards.

Frequently Asked Questions

What is pg_stat_statements?
pg_stat_statements is Postgres' built-in extension for tracking query-level execution statistics — it normalizes queries (replaces literals with placeholders), tracks total calls, total time, rows returned, and shared-buffer hits per query template. Query SELECT * FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 20; to find your slowest queries by cumulative time. It's the foundation of every Postgres performance dashboard and the first extension to enable on any production deployment.
Should I always enable pg_stat_statements?
Yes — for any production Postgres deployment, the answer is essentially always yes. Overhead is under 1% in measured benchmarks, and the diagnostic value is enormous: you can answer 'what's slow?' in seconds. The one caveat is that it requires shared_preload_libraries and a restart, so add it during initial deployment or a maintenance window. Most managed providers (RDS, Aurora, Supabase, Neon, Azure) have it pre-enabled by default.
What's the difference between pg_stat_statements and pg_stat_monitor?
pg_stat_statements gives cumulative totals — total time, total calls — since the last reset. pg_stat_monitor (Percona's extension) adds time-bucketed aggregation: it splits stats into rolling buckets (e.g. last 5 minutes, last hour) so you can see trends, not just lifetime totals. It also adds histograms of query execution time and tracks more fields per query. For most teams, pg_stat_statements is enough; pg_stat_monitor is worth adopting when you need trending visibility without building it yourself in a metrics system.
How do I find slow queries in Postgres?
Enable pg_stat_statements, then query SELECT query, calls, total_exec_time, mean_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 20; for the queries consuming the most cumulative time. Add auto_explain to log query plans for queries over a threshold (e.g. 1 second). For visual analysis, tools like pganalyze, PoWA, and Datadog give you dashboards over the same data. For per-query deep-dives, EXPLAIN (ANALYZE, BUFFERS) shows the actual execution plan.
Does pg_stat_statements work on managed Postgres?
Yes — every major managed provider ships pg_stat_statements enabled by default. AWS RDS, Aurora, Supabase, Neon, and Azure Database for PostgreSQL all support it without configuration. Some providers also expose query stats through their own dashboards (RDS Performance Insights, Aurora Query Insights, Supabase Reports) which read from pg_stat_statements under the hood.

Manage PostgreSQL Visually

1bench is a modern GUI client for PostgreSQL — install extensions, write queries, and inspect schemas without leaving the IDE.

Try 1bench for PostgreSQL