Awesome
pgSCV - PostgreSQL ecosystem metrics collector
pgSCV
- collects a lot of stats about PostgreSQL environment.
- exposes metrics through the HTTP
/metrics
endpoint in Prometheus metrics exposition format.
IMPORTANT NOTES This project is a continuation of the development of the original pgSCV by Alexey Lesovsky
Features
- Supported services: support collecting metrics of PostgreSQL, Pgbouncer and Patroni.
- OS metrics: support collecting metrics of operating system.
- TLS and authentication.
/metrics
endpoint could be protected with basic authentication and TLS. - Collecting metrics from multiple services. pgSCV can collect metrics from many databases instances.
- User-defined metrics. pgSCV could be configured in a way to collect metrics defined by user.
- Collectors management. Collectors could be disabled if necessary.
- Collectors filters. Collectors could be adjusted to skip collecting metrics based on labels values, like block devices, network interfaces, filesystems, users, databases, etc.
Requirements
- Can run on Linux only; can connect to remote services running on other OS/PaaS.
- Requisites for connecting to the services, such as login and password.
- Database user should have privileges for executing stats functions and reading views. For more details see security considerations.
Quick start
Download the archive from releases. Unpack the archive. Create minimum config file. Start pgSCV systemd service under postgres
user.
curl -s -L https://github.com/cherts/pgscv/releases/download/v0.9.6/pgscv_0.9.6_linux_$(uname -m).tar.gz -o - | tar xzf - -C /tmp && \
mv /tmp/pgscv.yaml /etc && \
mv /tmp/pgscv.service /etc/systemd/system && \
mv /tmp/pgscv.default /etc/default/pgscv && \
mv /tmp/pgscv /usr/sbin && \
chown postgres:postgres /etc/pgscv.yaml && \
chmod 640 /etc/pgscv.yaml && \
systemctl daemon-reload && \
systemctl enable pgscv --now
or using Docker, use DATABASE_DSN
for setting up a connection to PostgreSQL:
docker pull cherts/pgscv:latest
docker run -ti -d --name pgscv \
-e PGSCV_LISTEN_ADDRESS=0.0.0.0:9890 \
-e PGSCV_DISABLE_COLLECTORS="system" \
-e DATABASE_DSN="postgresql://postgres:password@dbhost:5432/postgres" \
-p 9890:9890 \
--restart=always \
cherts/pgscv:latest
or using Docker, save deploy/pgscv.yaml
config file to local directory /etc/pgscv:
docker pull cherts/pgscv:latest
docker run -ti -d --name pgscv \
-v /etc/pgscv:/etc/app \
-p 9890:9890 \
--restart=always \
cherts/pgscv:latest \
--config-file=/etc/app/pgscv.yaml
or using Docker-compose, edit file docker-compose.yaml
for setting up a connection to PostgreSQL:
mkdir ~/pgscv
curl -s -L https://raw.githubusercontent.com/CHERTS/pgscv/master/deploy/docker-compose.yaml -o ~/pgscv/docker-compose.yaml && cd ~/pgscv
docker-compose up -d
When pgSCV has been started it is ready to accept HTTP requests at http://127.0.0.1:9890/metrics
.
or using k8s deployment
curl -s -L https://raw.githubusercontent.com/CHERTS/pgscv/master/deploy/deployment.yaml -o ~/deployment.yaml
kubectl apply -f ~/deployment.yaml
or using k8s helm chart
git clone https://github.com/CHERTS/pgscv.git && cd pgscv
kubectl create ns pgscv-ns
helm install -n pgscv-ns pgscv deploy/helm-chart/
Complete setup
Checkout complete setup guide.
Documentation
For further documentation see wiki.
Grafana dashboards
See directory deploy/grafana or use Grafana Lab repo:
- pgSCV: System dashboard (ID: 21409)
- pgSCV: PostgreSQL dashboard (ID: 21430)
- pgSCV: Pgbouncer dashboard (ID: 21429)
- pgSCV: Patroni dashboard (ID: 21462)
Support and feedback
If you need help using pgSCV feel free to open discussion via email or Telegram @cherts or create an issue
Development and contribution
To help development you are encouraged to:
- provide feedback via email or Telegram @cherts or create an issue
- pull requests for new features
- star the project
Current developer and maintaner
Authors of original version
License
BSD-3. See LICENSE for more details.