Performance Monitoring (PG Extension)

Enabling

Enable native performance monitoring with pg_stat_statement.

circle-info

This extension is already present in many postgres installations and docker images (even Alpine).

Enable extension

circle-info

For docker-compose add this to /docker-entrypoint-initdb.d.

-- Enable extension (once per database)
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

Add configuration (Non-docker)

Add to postgresql.conf.

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all

Then restart postgresql to activate it.

Add configuration (Docker)

For docker-compose images you can add to the postgres service:

docker-compose.yaml
services:
  db:
    image: postgres:xx-alpine
    ...
    command: >
      postgres
      -c shared_preload_libraries=pg_stat_statements
      -c pg_stat_statements.track=all
      -c pg_stat_statements.max=10000
      -c track_activity_query_size=2048

Check extension

Monitoring Queries

Slowest & most frequent

Monitor real-time query activity

Check buffer & cache usage (I/O health)

Monitor locks & blocking

Temp file usage (memory under pressure)

Database load stats

Last updated