DEV Community

Enes Baytekin for Açıklab

Posted on

Node Exporter ve Prometheus Kurulum Rehberi

Node exporter bir makinedeki bazı metrikleri (cpu, ram, disk vb.) belli bir port üzerinden (default 9100) dışarıya sunar. Daha sonra burada sunulan metrikleri bu porta istek atarak herhangi bir yazılım aracılığıyla izlemek mümkündür. Bu örnekte prometheus ile izlenecektir.

Node exporter çok hafif bir uygulama olduğu için sistemi yormaz ve bu makine üzerinde izleme yapmak isteyen araçlar kendi ajanlarını kurmak zorunda kalmaz, hepsi aynı formattan okuyabilirler.

Genel Mimari

┌─────────────────┐          ┌─────────────────┐
│   Prometheus    │ ───────► │  Node Exporter  │
│   (Ana Sunucu)  │  scrape  │  (Hedef Makine) │
│   Port: 9090    │          │   Port: 9100    │
└─────────────────┘          └─────────────────┘
Enter fullscreen mode Exit fullscreen mode

Hedef Makineye Node Exporter Kurulumu

Adım 1: Node Exporter İndir ve Kur

# Kullanıcı oluştur
sudo useradd --no-create-home --shell /bin/false node_exporter

# Son sürümü indir (sürümü kontrol edin: https://github.com/prometheus/node_exporter/releases)
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz

# Çıkart ve taşı
tar -zxvf node_exporter-*.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Enter fullscreen mode Exit fullscreen mode

Adım 2: Systemd Servisi Oluştur

sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

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

[Install]
WantedBy=multi-user.target
EOF
Enter fullscreen mode Exit fullscreen mode

Adım 3: Servisi Başlat

sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Enter fullscreen mode Exit fullscreen mode

Adım 4: Firewall Ayarı (Gerekirse)

sudo firewall-cmd --permanent --add-port=9100/tcp
sudo firewall-cmd --reload

# ya da

sudo ufw allow 9100/tcp
Enter fullscreen mode Exit fullscreen mode

Doğrulama

curl http://localhost:9100/metrics
Enter fullscreen mode Exit fullscreen mode

Prometheus Kurulumu

Adım 1: Prometheus İndir ve Kur

# Kullanıcı ve dizinler oluştur
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus /var/lib/prometheus

# İndir
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz

# Çıkart ve kopyala
tar -zxvf prometheus-*.tar.gz
cd prometheus-*/
sudo cp prometheus promtool /usr/local/bin/
sudo cp -r consoles console_libraries /etc/prometheus/
sudo chown -R prometheus:prometheus /etc/prometheus
Enter fullscreen mode Exit fullscreen mode

Adım 2: Prometheus Yapılandırması

sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  # Prometheus kendisini izler
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  # Hedef makineler (Node Exporter)
  - job_name: 'node-exporter'
    static_configs:
      - targets:
        - '192.168.1.10:9100'   # Hedef makine 1
        - '192.168.1.11:9100'   # Hedef makine 2
        - '192.168.1.12:9100'   # Hedef makine 3
        labels:
          env: 'production'
EOF

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Enter fullscreen mode Exit fullscreen mode

Adım 3: Systemd Servisi

sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[Unit]
Description=Prometheus
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 \
    --web.enable-lifecycle

[Install]
WantedBy=multi-user.target
EOF
Enter fullscreen mode Exit fullscreen mode

Adım 4: Başlat

sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
Enter fullscreen mode Exit fullscreen mode

Erişim ve Doğrulama

Servis         URL                                 Açıklama
-------------------------------------------------------------------
Prometheus UI  http://PROMETHEUS_IP:9090           Ana dashboard
Targets        http://PROMETHEUS_IP:9090/targets   Hedef durumları
Node Exporter  http://HEDEF_IP:9100/metrics        Ham metrikler
Enter fullscreen mode Exit fullscreen mode

Yeni Hedef Ekleme

/etc/prometheus/prometheus.yml dosyasına yeni target ekleyin:

- targets:
  - '192.168.1.10:9100'
  - '192.168.1.11:9100'
  - 'yeni-sunucu.example.com:9100'  # Yeni eklenen
Enter fullscreen mode Exit fullscreen mode

Sonra yapılandırmayı yeniden yükleyin:

# Yöntem 1: API ile (web.enable-lifecycle aktifse)
curl -X POST http://localhost:9090/-/reload

# Yöntem 2: Servisi yeniden başlat
sudo systemctl restart prometheus
Enter fullscreen mode Exit fullscreen mode

Faydalı PromQL Sorguları

  • CPU kullanımı (%)

100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

  • RAM kullanımı (%)

(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

  • Disk kullanımı (%)

100 - (node_filesystem_avail_bytes / node_filesystem_size_bytes * 100)

  • Ağ trafiği (bytes/s)

rate(node_network_receive_bytes_total[5m])

Top comments (0)