Monitor PostgreSQL dengan Prometheus dan Grafana
Introduction
Mengetahui health status dan metrik performa database secara real-time adalah langkah awal dalam menjaga stabilitas infrastruktur sehingga kita butuh tools yang tepat untuk membaca data tersebut dengan mudah.
Postingan ini akan memandu untuk melakukan setup monitoring PostgreSQL dengan menggunakan Prometheus dan Grafana dan juga untuk agent kita akan menggunakan postgresql exporter. Untuk kasus ini, Prometheus dan Grafana sudah tersedia dan kita hanya fokus untuk postgresql metrics saja.
Installation
Step 1: Buat akun monitoring di postgresql
CREATE USER postgres_exporter WITH PASSWORD 'PasswordAkunIni';
GRANT CONNECT ON DATABASE postgres TO postgres_exporter;
GRANT pg_monitor TO postgres_exporter;
Step 2: Download postgresql exporter dan Install postgresql
VERSION=$(curl -s https://api.github.com/repos/prometheus-community/postgres_exporter/releases/latest|grep tag_name|cut -d '"' -f 4|sed 's/v//')
sudo mkdir /opt/postgresql_exporter && sudo cd /opt/postgresql_exporter
sudo wget https://github.com/prometheus-community/postgres_exporter/releases/download/v$VERSION/postgres_exporter-$VERSION.linux-amd64.tar.gz
sudo tar -xf postgres_exporter-$VERSION.linux-*.tar.gz
sudo cp postgres_exporter-$VERSION.linux-*/postgres_exporter /usr/local/bin
Step 3: Buat file untuk konfigurasi postgresql
sudo nano postgres_exporter.env
DATA_SOURCE_NAME="postgresql://postgres_exporter:PasswordAkunIni@localhost:5432/?sslmode=disable"
Step 4: Buat service untuk postgresql exporter
sudo nano /etc/systemd/system/postgres_exporter.service
[Unit]
Description=Prometheus exporter for Postgresql
Wants=network-online.target
After=network-online.target
[Service]
User=postgres_exporter
Group=postgres_exporter
WorkingDirectory=/opt/postgresql_exporter
EnvironmentFile=/opt/postgresql_exporter/postgres_exporter.env
ExecStart=/usr/local/bin/postgres_exporter --web.listen-address=:9187 --web.telemetry-path=/metrics
Restart=always
[Install]
WantedBy=multi-user.target
Step 5: Buat user nologin untuk posgresql exporter
sudo useradd -M -r -s /sbin/nologin postgres_exporter
sudo chown -R postgres_exporter:postgres_exporter /opt/postgresql_exporter
sudo systemctl daemon-reload
sudo systemctl enable --now postgres_exporter
sudo ufw allow 9187
Untuk metrics postgres exporter sudah siap, sekarang kita akan menambahkan ke Prometheus dan Grafana
Adding to Prometheus & Grafana
Menambahkan ke prometheus.yaml
Tambahkan dibagian scrape_configs kemudian restart prometheus service
# Scraping PostgreSQL Metrics
- job_name: 'postgres_exporter'
static_configs:
- targets: ['<IPADDRESS_POSTGRESQL>:9187']
Menambahkan ke dashboard Grafana
Untuk dashboard postgresql, kita bisa menggunakan dashbord yang sudah tersedia di https://grafana.com/grafana/dashboard atau bisa menggunakan ID 9628