Running on docker - CHERTS/pgscv GitHub Wiki
Running on Docker.
General recommendations:
- use environment variables instead of YAML configuration.
- disable systems collectors - it is unnecessary to collect system metrics being inside the container.
- disable collectors which require access to PostgreSQL data directories -
postgres/settings
,postgres/storage
,postgres/logs
. - setting up listening to allow network connection from other containers or hosts.
An example below demonstrates a typical use case when a database and pgSCV are running in separate containers.
- Create
example
network.
docker network create example
- Run
postgres
container.- Enable
pg_stat_statements
, it is preferred (but not strict). - Use
POSTGRES_PASSWORD=secret
to define password.
- Enable
docker run -d --rm --name db -ti -e POSTGRES_PASSWORD=secret --network example postgres:14 -c 'shared_preload_libraries=pg_stat_statements'
docker exec -ti db psql -U postgres -c 'CREATE EXTENSION pg_stat_statements'
- Run
pgscv
container.- Specify Postgres connection settings using
DATABASE_DSN
. - Disable some collectors with
PGSCV_DISABLE_COLLECTORS
. - Setup listen address with
PGSCV_LISTEN_ADDRESS
. - Expose port 9890.
- Don't detach, it's better to see logs if something goes wrong.
- Specify Postgres connection settings using
docker run -d --rm --name pgscv -ti -e PGSCV_LISTEN_ADDRESS=0.0.0.0:9890 -e PGSCV_DISABLE_COLLECTORS=system -e DATABASE_DSN="postgresql://postgres:secret@db/postgres" -p 9890:9890 --network example cherts/pgscv:latest
- Open the second terminal and fetch metrics using
curl
.
curl -s http://127.0.0.1:9890/metrics
- In the end, stop containers and remove
example
network.
docker stop db pgscv
docker rm db pgscv
docker network rm example