Postgresql metrics with prometheus and Grafana (postgresql exporter)

H. Alperen Selcuk
4 min readFeb 20, 2024

--

bu yazıda postgresql bir databaseinizden nasıl metricleri alıp grafanada göstereceğinizden bahsedeceğim.

postgresql iniz nerde çalıştığı önemli değil exporterı ona ulaştırmanız yeterli.

postgresql_exporter

öncelikle binary i kurmamız gerekiyor.

bu binary i githubdan indirdikten sonra local binary directorysine atalım.

 wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.15.0/postgres_exporter-0.15.0.linux-amd64.tar.gz
tar -xzvf postgres_exporter-0.15.0.linux-amd64.tar.gz
chmod +x postgres_exporter-0.15.0.linux-amd64/postgres_exporter
mv postgres_exporter-0.15.0.linux-amd64/postgres_exporter /usr/local/bin/

daha sonra postgresql e bağlanıp metricleri alması için postgresql için envrionment gireceğiz.

bunu da bir .env dosyası ile yapabiliriz. öncelikle bir dizin açıp içine env dosyasını oluşturalım.

mkdir -p /opt/postgres_exporter
cd /opt/postgres_exporter
touch postgres_exporter.env

benim IP 10.232.0.5 ve user password aynı. isterseniz admin yetkili bir user oluşturup ya da sadece read onu da kullanabilirsiniz.

read only user için:

ben postgres default userını kullanacağım.

daha sonra postgresql_exporter için service şeklinde çalışması için systemd altına bir dosya oluşturalım.

vi /etc/systemd/system/postgres_exporter.service

bunun içine hem environmenti hem de postgre binarysini göstereceğiz ve onları kullanarak çalışacak. bu şekilde istediğiniz her run edilen process için servis oluşturabilirsiniz. kendiniz bir bash script yapıp onu da servis olarak oluşturup her zaman restart olsa bile çalışmasını sağlayabilirsiniz.

sudo systemctl daemon-reload
sudo systemctl start postgres_exporter
sudo systemctl enable postgres_exporter

postgresql exporterdan sonra şimdi prometheus u ayarlamaya geldi.

protmehues

prometheus için öncelikle platformunuza uygun binary indirmelisiniz.

bir tane dizin yaratıp config fileı oraya koyacağız.

mkdir -p /opt/prometheus
cd /opt/prometheus
touch prometheus.yml

daha sonra confiği içine koyacağız.

prometheus için de service şeklinde çalışması için bir file yaratacağız.

vi /etc/systemd/system/prometheus.service

daha sonra içeriği içine koyacağız.

daemon reload ve restart işleminden sonra çalışmaya başlayacak ve metricleri grafana için hazır hale getirecek.

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

çalışıp çalışmadığını IP nize curl atarak görebilirsiniz.

curl http://postgresqlip:9100/metrics

metriclerin geldiğini görmelisiniz.

grafana

ben hızlıca docker üzerinde bir grafana ayaga kaldırıp datasource ekleyeceğim, hali hazırda kullandığınız grafanaya da koyabilirsiniz.

basitçe bir container olarak ayaga kaldırdım user pass admin/admin

docker run -d — name=grafana -p 3000:3000 grafana/grafana

grafanaya 3000 portundan bağlanacağım.

datasource eklemek için sırasıyla

connections -> data source -> add new datasource

diyerek prometheus u seçiyoruz.

başka bir şey değiştirmeden save and test dediğiniz anda başarılı olduğunu görmeniz gerek

şimdi bir tane dashboard import edeceğiz.

dashboard a gelerek import seçip ID kısmına 9628 yazacağız bu bize hazır postgresql dashboardu verecek.

load dediğimiz anda dashboard gelecek ve datasource olarak eklediğimiz prometheus u göstereceğiz.

ve ardından postgresql metriclerimiz hazır hale geliyor. dashboarddan postgresql i monitor edebiliriz.

bir sonraki yazımda görüşmek üzere.

h.a.s.

--

--