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 │
└─────────────────┘ └─────────────────┘
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
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
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
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
Doğrulama
curl http://localhost:9100/metrics
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
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
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
Adım 4: Başlat
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
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
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
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
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)