| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # Sidecar for the data-plane Postgres. Drop this into the compose project
- # that already runs the data-plane container — NOT into the observability
- # compose. The exporter needs to live next to the database so it can
- # scrape pg_stat_* with low-latency local-socket access; prometheus then
- # scrapes the exporter from across the briven docker network.
- #
- # Wire it in by adding `services:` and `networks:` blocks to your existing
- # data-plane compose, or `docker compose -f data-plane.yml -f
- # postgres-exporter.compose.yml up -d` to merge the two.
- #
- # Required env on the data-plane container (or via .env.local):
- # POSTGRES_EXPORTER_DATA_SOURCE_NAME — read-only DSN. Recommend creating
- # a dedicated `briven_metrics` postgres role with pg_monitor membership
- # so the exporter can read pg_stat_* without superuser:
- # CREATE ROLE briven_metrics LOGIN PASSWORD '<rotated>';
- # GRANT pg_monitor TO briven_metrics;
- #
- # Then DSN looks like:
- # postgresql://briven_metrics:<password>@briven-postgres:5432/postgres?sslmode=disable
- #
- # (The exporter is on the internal docker network; sslmode=disable is
- # fine. If you migrate the data plane to a managed cluster, switch to
- # sslmode=require.)
- services:
- postgres-exporter:
- image: prometheuscommunity/postgres-exporter:v0.16.0
- restart: unless-stopped
- environment:
- DATA_SOURCE_NAME: ${POSTGRES_EXPORTER_DATA_SOURCE_NAME}
- # Default collectors are fine for the four-dashboard set (database
- # size, transactions, deadlocks, longest query). Add explicit
- # `--collector.<name>` flags here when adding more dashboards.
- PG_EXPORTER_AUTO_DISCOVER_DATABASES: 'true'
- PG_EXPORTER_EXCLUDE_DATABASES: 'template0,template1'
- networks:
- # Explicit alias: this container lives in its own compose project
- # (briven-pg-exporter), but the prometheus container scrapes us by
- # the short name `postgres-exporter`. Docker compose normally
- # only aliases within its own project; we need a cross-project
- # alias on the shared dokploy-network so prometheus can resolve.
- dokploy-network:
- aliases:
- - postgres-exporter
- labels:
- - 'briven_logs=true'
- networks:
- dokploy-network:
- external: true
|