Grafana ile Sanal Makinelerimizi (Virtual Machines) izleyebileceğiz. Monitoring servislerinden en çok kullanılanlarından birisidir. Daha detaylı anlamanız için daha önce ki yazımı okuyabilirsiniz. Monitoring Nedir ve Neden Önemlidir?

İlk önce belirtmem gerekir ki ben bu kurulumu Debian 11 de yaptım.

Kurulum adımlarına geçmeden önce paketlerimizi güncelleyelim ve bazı gerekli paketleri yükleyelim.

Güncellemeler için;
apt update && apt upgrade -y

Gerekli paketler için;
apt install curl wget tar ufw vim git -y

Kuruluma geçmeden önce gerekli grup ve kullanıcıları oluşturuyoruz.


sudo groupadd --system prometheus && sudo useradd -s /sbin/nologin --system -g prometheus prometheus

Kuruluma geçmeden önce gerekli dizinleri oluşturuyoruz;


sudo mkdir /etc/prometheus && sudo mkdir /var/lib/prometheus

1)Prometheus indiriyoruz;


curl https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -

Sonrasında indirdiğimiz sıkıştırılmış dosyayı tar komutu ile çıkartıyoruz.;


tar -xvf prometheus-*.linux-amd64.tar.gz

Çıkarttığımız dosyaları /etc/prometheus altına taşıyacağız.


cd prometheus-2.49.1.linux-amd64
sudo mv * /etc/prometheus

Gerekli izinleri dosya ve dizinlere verelim;


sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

Sistem de çalışması için Prometheus dosyalarının kopyalarını /usr/local/bin/ altına oluşturuyoruz.


sudo cp -r /etc/prometheus/* /usr/local/bin/

Prometheus Servis olarak çalışması için bir dosya oluşturuyoruz; Ben vim kullanıyorum siz farklı bir düzenleyici kullanabilirsiniz örk: nano;


sudo vim /etc/systemd/system/prometheus.service

Oluşturduğumuz dosyanın içine bunları yapıştırıp kayıt ediyoruz; Vimden kayıt edip çıkmak için 'Shift + ZZ' (Shift tuşuna basılı tutarak iki kere Z tuşuna basmanız yeterli);


[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
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

[Install]
WantedBy=multi-user.target

Oluşturduğumuz bu servisi sistemimizde de aktif ediyoruz ve sistem yeniden başlatmalarında otomatik olarak başlamasını sağlıyoruz;


sudo systemctl daemon-reload && sudo systemctl enable --now prometheus && systemctl status prometheus

Güvenlik duvarından port izini veriyoruz;


sudo ufw allow 9090 && sudo ufw allow 9100 && sudo ufw allow 3000

Grafana aracılığı ile izlemek istediğimiz Sanal Makinelerin ip adreslerini /etc/prometheus/prometheus.yml dosyasının en alt satırına ekliyoruz.

sudo vim /etc/prometheus/prometheus.yml


- job_name: 'node_exporter_metrics'
    scrape_interval: 5s
    static_configs:
     - targets: ['192.168.1.115:9100','192.168.1.116:9100','192.168.1.117:9100','192.168.1.118:9100','192.168.1.119:9100','192.168.1.120:9100']

Prometheus.yml dosyasında bir sorun olup olmadığını kontrol etmek için Promtool komutunu kullanıyoruz;


promtool check config /etc/prometheus/prometheus.yml

Config dosyasında yaptığımız değişikliklerin aktif hale gelmesi için Prometheus servisini yeniden başlatıyoruz ve durumunu kontrol ediyoruz.


sudo systemctl restart prometheus && systemctl status prometheus

Aynı zamanda metriklerin 'State' durumun kontrol etmek için 'http:server-ip-adderess:9090/targets' adresine bakabiliriz.

Fakat burada küçük bir not düşmeliyim bu kendi başına yeterli değil. Gördüğünüz üzerine eklediğim diğer makineler 'Down' durumda. Onların her birine Node Exporter kurup, 9100 portunu açmamız gerekli. Böylece o makinelerden gerekli metrikler alıp Grafana yorumlayabilsin.


2)Node Exporter Kurulumu;


curl https://api.github.com/repos/prometheus/node_exporter/releases/latest| grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -

İndirdiğimiz sıkıştırılmış dosyayı tar komutu ile çıkartıyoruz;


tar -xvf node_exporter-*.linux-amd64.tar.gz

Sonrasında çıkan dosyaları /usr/local/bin/ altına taşıyoruz.


sudo mv node_exporter-*.linux-amd64/node_exporter /usr/local/bin/

Node Exporter servisi için kullanıcı oluşturuyoruz;


sudo useradd -rs /bin/false node_exporter

Servis olarak çalışması için dosyalarını oluşturuyoruz /etc/systemd/system/node_exporter.service adında dosya oluşturuyoruz ve içine servis çalışması için gerekli bilgileri yazıyoruz; Bunu vim veya nano kullanarak yapabilirsiniz.


sudo vim /etc/systemd/system/node_exporter.service

[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Oluşturduğumuz bu servisi sistemimizde de aktif ediyoruz ve sistem yeniden başlatmalarında otomatik olarak başlamasını sağlıyoruz;


sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter && systemctl status node_exporter

Eğer Red Hat Ailesine ait bir linux sürümü kullanıyorsanız 'setenforce permissive' komutunu kullanmanız gerekli bunu yapmanız gerekiyor.


sudo setenforce permissive
sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter && systemctl status node_exporter

Bu portu izlemek istediğimiz her makinede açıyoruz ve Node Exporter adımlarını yapıyoruz.


sudo ufw allow 9100

3)Grafana Kurulumu;

Korkmayın bu işin en kolay kısmı bu çünkü Grafana aslında tek başına bir şey değil önemli ve karışık kısımları bitirdik.

ilk önce Grafana'ı yüklemek için repo ekliyoruz;


sudo apt install gnupg2 software-properties-common dirmngr apt-transport-https lsb-release ca-certificates -y

curl https://packages.grafana.com/gpg.key | sudo apt-key add -

add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

Sonra apt update komutu ile repoları güncelliyoruz ve Grafana'ı yüklüyoruz;


sudo apt update && sudo apt -y install grafana

Grafana servisinin sistemde otomatik olarak başlatmak ve durumunu kontrol etmek için ayarlamaları yapıyoruz;


sudo systemctl enable --now grafana-server && systemctl start grafana-server && systemctl status grafana-server

Grafana'ı kontrol etmek için http://ip-adress:3000 adresine gidip varsayılan olarak kullanıcı bilgileri;


Username: admin
Password: admin

Fakat sonrasında güçlü bir parola belirlemeyi unutmayın.

Grafana web ara yüzünde 'Configuration' menüsünün altında 'Data Source' geliyoruz

ve Add Data Soruce bölümünden Prometheus seçiyoruz URL kısmına 'http://ip-adresiniz:9090' burada ki ip adresiniz Grafana yüklü olduğu makinesinin ip adresini yazıp 'Save & Test' yapıyoruz. Eğer bir sorun olmazsa 'Successfully queried the Prometheus API.' yazısı bizi karşılayacak sonra Dashbord eklemeye gidiyoruz.

Bir Dashboard eklemek için, Dashboards menüsünden 'Create Dashboard' seçeneğini seçiyoruz. Sonra 'Import a dashboard' seçiyoruzekliyoruz benim kullandığım Dashboard '15172' kodunu yazıyoruz ve Load diyoruz.