Yeni yazı: Active Directory Sağlık Kontrolü: krbtgt Rotasyonu ve Hesap Yaşam Döngüsü
Adım Adım Prometheus, Grafana ve Node Exporter Kurulumu: Güçlü Bir İzleme Sistemi Oluşturun!

Adım Adım Prometheus, Grafana ve Node Exporter Kurulumu: Güçlü Bir İzleme Sistemi Oluşturun!

İçindekiler

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?

Ön Hazırlık: Paketler, Kullanıcı ve Dizinler

İ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: Kurulum, Servis ve Hedef Tanımı

Önce Prometheus’u 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.

Prometheus hedef makineler (targets) listesi

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: İzlenecek Her Makineye Ayrı Kurulur


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 ve Veri Kaynağı Tanımı

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 -

Sürüm notu: apt-key bu yazının yazıldığı Debian 11‘de çalışır ama kullanımdan kaldırılmıştır; Debian 12 ve Ubuntu 22.04 ile birlikte komut artık yok. Yeni sistemlerde anahtarı doğrudan dosyaya yazın (curl -fsSL … | sudo gpg --dearmor -o /etc/apt/keyrings/grafana.gpg) ve depo satırında signed-by= ile gösterin.


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

Grafana giriş ekranı

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

Grafana Prometheus veri kaynağı (Data Source) ekleme

ve Add Data Source 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 Dashboard eklemeye gidiyoruz.

Grafana Dashboard içe aktarma ekranı

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

Grafana Node Exporter Dashboard ekranı

Sonuç

  • Prometheus hedefleri çeker, hedefler kendini bildirmez. prometheus.yml‘ye eklemediğiniz bir makine panoda hiç görünmez; “kurdum ama veri gelmiyor” sorusunda ilk bakılacak yer :9090/targets sayfasıdır.
  • Node Exporter izlenecek her makineye ayrı ayrı kurulur. Yalnızca Prometheus sunucusuna kurmak yalnızca o sunucuyu izler; diğerleri 9100 açılıp exporter çalışana kadar Down kalır.
  • Grafana veri üretmez, sorgular. Panolar boşsa sorun çoğunlukla Grafana’da değil toplanan veridedir; teşhise :3000‘den değil :9090‘dan başlayın.
  • Kurulum bittiğinde izleme kurulmuş olmaz. Eşik ve bildirim tanımlanmadığı sürece arızayı yine siz değil kullanıcı fark eder — Monitoring nedir ve neden önemlidir yazısı bu tarafı ele alıyor.
Paylaş :

İlgili Yazılar

Monitoring Nedir ve Neden Önemlidir?

Monitoring Nedir ve Neden Önemlidir?

Bir sunucunun diski dolduğunda bunu iki şekilde öğrenirsiniz: ya sistem size söyler, ya da müşteri arar. Aradaki fark teknik bir yetenek değil, bir tercihtir — o sunucuyu izliyor muydunuz, izlemiyor muydunuz?

Ansible Nedir ve Ne İşe Yarar?

Ansible Nedir ve Ne İşe Yarar?

Ansible, otomasyon, yapılandırma yönetimi ve uygulama dağıtımı için kullanılan açık kaynaklı bir yazılımdır. Genellikle sunucu yapılandırma yönetimi, yazılım dağıtımı ve iş süreçlerinin otomatikleştirilmesi gibi alanlarda kullanılır. Ansible, basit, etkili ve agentless (Kontrol edilecek sunuculara bir kurulum yapmaya gerek olmaz) bir yapısıyla bilinir. Bu da kurulumu ve yapılandırması kolaylaştırır, çünkü ek bir yazılım veya agent yüklemeye gerek kalmadan uzaktaki makineleri yönetebilir.

Symbolic Link ve Hard Link

Symbolic Link ve Hard Link

Bir dosyayı sildiniz ve yerinde duran bağlantı hâlâ orada — ama artık hiçbir şeye açılmıyor. Ya da tam tersi: dosyayı sildiniz, du çıktısında yer boşalmadı. İkisi de aynı sorunun iki yüzüdür: Linux’ta bir dosya adı ile dosyanın kendisi ayrı şeylerdir ve ln komutunun iki farklı biçimi bu ikisini farklı uçlarından bağlar.