Grafana ve Prometheus Kurulumu (Monitoring)
Veritabanının performansını, güvenilirliğini ve genel sağlığını düzenli olarak izlemek bir DBA temel görevlerinden biridir. İzlemeyi opensource olan Grafana ve Prometheus üzerinden gerçekleştireceğiz.
Grafana: Birçok farklı veri kaynağından veri toplamak, bu verileri görsel olarak temsil etmek ve kullanıcılara gerçek zamanlı izleme, analiz ve raporlama imkanı sunar. Kısaca verileri görselleştirmeye ve ekstra bir sürü özellik sunar.
Prometheus: Sistem ve uygulama izleme ve metrik toplama aracıdır. Temel amacı sistemlerin performansını ve sağlığını izlemek için gelen verileri toplayıp depolamaktır.
Peki bunların Postgresql ile alakası nedir derseniz. Aslında bu yazı sadece Postgresql ile monitoring yapılması için ilk adım olarak düşünebilirsiniz.
Bu yazıda Grafana ve Prometheus kurulum ve yapılandırmalarını gerçekleştireceğiz. Bir sonraki yazıda Postgresql Exporter ve Node Exporter üzerine olacak.
Kurulumu Redhat üzerinde gerçekleştireceğiz.
Grafana Kurulumu
İlk olarak grafana repo yapılandırmalarını ve kurulumu gerçekleştiriyoruz.
# Grafana Repo için Key indiriyoruz.
wget -q -O gpg.key https://rpm.grafana.com/gpg.key
# İndirilen Keyi Repo ekliyoruz.
sudo rpm --import gpg.key
# Repo configleri için dosya oluşturuyoruz.
nano /etc/yum.repos.d/grafana.repo
# Aşağıdaki ayarları dosyaya kayıt edip çıkıyoruz.
[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
exclude=*beta*
# Grafanayı kuruyoruz.
yum install grafana
2. aşama olarak Grafana servisini başlatalım ve port izinlerini verelim.
# Sunucu yeniden başladığında servis otomatik olarak başlasın.
systemctl enable grafana-server
# Servisi başlatıyoruz.
systemctl start grafana-server
# Servisi kontrol ediyoruz.
systemctl status grafana-server
# Firewall 3000 portuna izin veriyoruz.
firewall-cmd --zone=public --add-port=3000/tcp --permanent
# Firewall ayarlarını yeniden yüklüyoruz.
firewall-cmd --reload
# Sunucudaki erişilebilir portları listeliyoruz.
netstat -tulnp
Servisimiz aktif şeklinde çalışıyor olduğunu ve 3000 portuna erişimimiz açık olduğunu kontrol ettik.
http://192.168.153.141:3000/login adresini tarayıcınızda açıyorsunuz. Tabi siz kendi sunucunuzun IP sini girmeyi unutmayın. “ip a” komutu ile IP adresinizi öğrenebilirsiniz. Karşınıza gelen Login ekranına default olan aşağıdaki bilgileri giriyoruz. Sizden şifreyi değiştirmenizi isteyecek. Güncel şifreyi belirleyip devam edin.
Username: admin
Password: admin
Giriş ekranını gördükten sonra Grafana kurulumunu bitirdik. Grafana geri dönmek üzere ile Prometheus kurulumuna geçelim.
Prometheus Kurulum ve Yapılandırılması
# prometheus kullanıcı drubu oluşturuyoruz.
groupadd --system prometheus
# Kullanıcıyı sisteme login yapmasını engelliyoruz.
useradd -s /sbin/nologin --system -g prometheus prometheus
# Verileri tutacağımız dizini oluşturuyoruz.
mkdir /var/lib/prometheus
# etc altına gerekli dizinleri oluşturuyoruz.
for i in rules rules.d files_sd; do
sudo mkdir -p /etc/prometheus/${i};
done
# opt dizinine geçiyoruz.
cd /opt
# Prometheus zip halini indiriyoruz.
wget https://github.com/prometheus/prometheus/releases/download/v2.37.9/prometheus-2.37.9.linux-amd64.tar.gz
# zip dosyasını açıyoruz.
tar -xzvf prometheus-2.37.9.linux-amd64.tar.gz
# listeleme komutu ile dizini kontrol edin.
ls -l
# Dizinin içerisine geçin.
cd prometheus-2.37.9.linux-amd64
# listeleme komutu ile dizini kontrol edin.
ls -l
# Servis dosyası için dosyaları taşıyoruz.
cp prometheus promtool /usr/local/bin/
# etc altına gerekli dosya ve dizinleri oluşturuyoruz.
cp -r prometheus.yml consoles/ console_libraries/ /etc/prometheus/
# Postgresql Exporter Servis dosyasını bu dosyada yapacağız.
# Ancak şimdilik olduğu gibi bırakıyoruz.
nano /etc/prometheus/prometheus.yml
# Servis dosyasını oluşturuyoruz.
nano /etc/systemd/system/prometheus.service
# Aşağıdaki ayarları dosyaya kayıt edip çıkıyoruz.
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090 \
--web.external-url=
SyslogIdentifier=prometheus
Restart=always
[Install]
WantedBy=multi-user.target
# Dizinin yetkisini prometheus kullanıcısına atıyoruz.
chown -R prometheus:prometheus /etc/prometheus
# Dizini yetkilendiriyoruz.
chmod -R 775 /etc/prometheus/
# Dizinin yetkisini prometheus kullanıcısına atıyoruz.
chown -R prometheus:prometheus /var/lib/prometheus/
# Sistem için servisleri yeniden yükliyoruz.
systemctl daemon-reload
# Servisi başlatıyoruz.
systemctl start prometheus
# Sunucu yeniden başladığında servis otomatik olarak başlasın.
systemctl enable prometheus
# Servisi kontrol ediyoruz.
systemctl status prometheus
# Firewall 9090 portuna izin veriyoruz.
firewall-cmd --zone=public --add-port=9090/tcp --permanent
# Firewall ayarlarını yeniden yüklüyoruz.
firewall-cmd --reload
# Sunucudaki erişilebilir portları listeliyoruz.
netstat -tulnp
http://192.168.153.141:9090/ adresini tarayıcınızda açıyorsunuz. Tabi siz kendi sunucunuzun IP sini girmeyi unutmayın. “ip a” komutu ile IP adresinizi öğrenebilirsiniz. Karşınıza Prometheus ekranı direkt olarak gelecektir.
Grafana ile Prometheus Entegrasyonu
Grafana ve Prometheus kurulumlarımızı tamamladık. Servislerin çalıştıklarını kontrol ettik. Son adım olarak Grafana ile Prometheus entegrasyon etmek kaldı.
Grafana arayüzünü açıyoruz. “Toggle Menu” (3 çizgi iconu) tıklayıp. “Connections” altındaki “Data Sources” açıyoruz.
“Add data source” butonuna tıklıyoruz.
“Prometheus” seçiyoruz.
“prometheus server URL” alanına Prometheus ip adresimizi giriyoruz. http://192.168.153.141:9090/
“Save & Test” butonunu seçiyoruz. Başarılı mesajını gördükten sonra entegrasyonumuz tamamlanmış oluyor.