pgloupe
A close look at your Postgres logs and query stats, in one offline binary.
Point it at a server’s log files and, if you have them, two pg_stat_statements snapshots. It tells you what to fix first, then shows the numbers behind it: slow statements with real percentiles, errors, lock waits and who blocked whom, temp files, checkpoints, autovacuum, connections. It also says which server settings limit the report and what to change.
A report over a generated test server, not real data.
Why this one
- One file in, one file out. No agent, no extension, no database to host. The HTML report is a single file that makes no network requests; JSON, text and CSV come from the same run.
- Logs and statistics together. The log shows what happened (errors, locks, slow runs);
pg_stat_statementscounts everything the log never saw, andpg_stat_databasesays how loaded the server was. pgloupe joins them per statement and says when they disagree. - One row per statement. Statements are grouped by their parse tree, so the same query with different literals is one row, and percentiles are per statement.
- Works on managed Postgres. It only needs
pg_stat_statements, which Amazon RDS, Cloud SQL, Azure and Aiven already have. It can fetch RDS logs itself. - Tells you why a number is odd. Resets, evictions, windows that do not match, unreadable query text, logs without durations: each becomes a plain sentence, not a silent zero.
- Fast. On an 11 GB set of generated PostgreSQL 17 logs it read about 141 MB/s on one thread using about 44 MiB of memory, and about 187 MB/s on 16 threads (452 MiB). Throughput and memory stayed flat from 0.5 GB to 11 GB; memory depends on the number of distinct statements (625 there), not on log size. Figures vary by hardware.
- Safe to share.
--anonymizerewrites names and literals before anything is counted.
The Statements view over the same generated test server.
Try it
pgloupe report postgresql.log --output html --out report.html
New here? Install it, then follow the quick start. On Amazon RDS, go straight to the RDS guide.
pgloupe never phones home: it makes no network connection unless you run a command that talks to your server, and it does not check for updates by itself.