Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
Prometheus node_exporter, Linux sunucunun CPU, bellek, disk, ağ ve dosya sistemi gibi metriklerini HTTP üzerinden sunan hafif bir ajandır. Prometheus bu metrikleri belirli aralıklarla çeker, siz de grafik çizer ve eşik aşıldığında uyarı üretirsiniz. Dedicated sunucu veya VPS filonuzu izlemenin yaygın ve ücretsiz yoludur.
Bu rehber sistem yöneticilerine yöneliktir. node_exporter'ı kuracak, dışarıya açmadan erişimi sınırlayacak, Prometheus'a ekleyecek ve disk, bellek ve CPU için temel uyarı kuralları yazacağız. Süre yaklaşık 40-60 dakikadır.
Gereksinimler
- İzlenecek Linux sunucu ve sudo yetkisi
- Metrikleri toplayacak bir Prometheus sunucusu (aynı makine olabilir)
- İzlenen sunucunun 9100 portuna yalnızca Prometheus sunucusunun erişebilmesi için güvenlik duvarı yetkisi
- Uyarıları bildirime çevirmek için Alertmanager (isteğe bağlı; bu rehber yalnızca uyarı kurallarını yazar)
- RHEL tabanlı sistemlerde ikili dosyayı indirmek için internet erişimi
Adım adım node_exporter kurulumu ve izleme
1. node_exporter'ı kurun (Debian ve Ubuntu)
Debian ve Ubuntu depolarında prometheus-node-exporter paketi bulunur. Servis kurulumla birlikte gelir ve varsayılan olarak tüm arayüzlerde 9100 portunda dinler; bu yüzden 3. adımdaki güvenlik duvarı kısıtını atlamayın.
sudo apt update
sudo apt install prometheus-node-exporter
sudo systemctl enable --now prometheus-node-exporter2. node_exporter'ı kurun (AlmaLinux ve Rocky)
RHEL tabanlı sistemlerin ana depolarında bu paket bulunmayabilir. Resmî Prometheus sürüm sayfasından linux-amd64 sürümünü indirip doğrulayarak kurun. İndirme adresindeki sürüm numarasını kendiniz seçin ve sağlama toplamını (checksum) sürüm sayfasındaki değerle karşılaştırın.
sha256sum node_exporter-*.linux-amd64.tar.gz
sudo useradd --system --no-create-home --shell /usr/sbin/nologin node_exporter
tar xzf node_exporter-*.linux-amd64.tar.gz
sudo install -o root -g root -m 0755 node_exporter-*.linux-amd64/node_exporter /usr/local/bin/node_exporterServis tanımını oluşturun. --web.listen-address ile dinleme adresini kısıtlıyoruz; yalnızca özel ağ arayüzünüzün IP'sini veya tüm arayüzleri güvenlik duvarıyla korumak isterseniz :9100 yazabilirsiniz.
sudo nano /etc/systemd/system/node_exporter.service[Unit]
Description=Prometheus node_exporter
After=network-online.target
Wants=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
Restart=on-failure
NoNewPrivileges=true
ProtectHome=true
ProtectSystem=strict
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now node_exporter3. Erişimi güvenlik duvarıyla sınırlayın
node_exporter kimlik doğrulaması olmadan sistem bilgisi paylaşır. 9100 portunu internete açmayın; yalnızca Prometheus sunucusunun IP'sine izin verin. 203.0.113.5 örnek bir adrestir, kendi Prometheus IP'nizle değiştirin. Firewall kurallarını eklemeden önce SSH erişiminin açık kaldığından emin olun.
# ufw (Debian / Ubuntu; varsayılan kurulu değildir)
sudo ufw allow from 203.0.113.5 to any port 9100 proto tcp
# firewalld (AlmaLinux / Rocky)
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=203.0.113.5 port port=9100 protocol=tcp accept'
sudo firewall-cmd --reload4. Prometheus'a hedef olarak ekleyin
Prometheus sunucusundaki prometheus.yml dosyasına yeni bir scrape_config ekleyin. Dosya yolu kuruluma göre değişir (Debian'da genellikle /etc/prometheus/prometheus.yml). Dosyada zaten bir scrape_configs: anahtarı varsa ikincisini eklemeyin, yeni işi mevcut listenin altına yazın; aynı job_name iki kez tanımlanırsa (Debian'ın varsayılan dosyasında node işi bulunabilir) yapılandırma reddedilir. YAML girintilerine dikkat edin.
scrape_configs:
- job_name: 'node'
scrape_interval: 15s
static_configs:
- targets: ['192.0.2.10:9100', '192.0.2.11:9100']Yapılandırmayı doğrulayın ve yeniden yükleyin. promtool Prometheus ile birlikte gelir.
promtool check config /etc/prometheus/prometheus.yml
sudo systemctl reload prometheus5. Temel uyarı kurallarını yazın
Uyarı kuralları ayrı bir dosyada tutulur. Aşağıdaki kurallar sunucunun ulaşılamaması, düşük disk alanı, düşük bellek ve yüksek CPU kullanımı için başlangıç noktasıdır. Eşik değerlerini ortamınıza göre ayarlayın.
sudo mkdir -p /etc/prometheus/rules
sudo nano /etc/prometheus/rules/node-temel.ymlgroups:
- name: node-temel
rules:
- alert: SunucuErisilemiyor
expr: up{job='node'} == 0
for: 2m
labels:
severity: critical
annotations:
summary: '{{ $labels.instance }} ulasilamiyor'
- alert: DiskAlaniAzaliyor
expr: node_filesystem_avail_bytes{fstype!~'tmpfs|overlay'} / node_filesystem_size_bytes{fstype!~'tmpfs|overlay'} < 0.10
for: 10m
labels:
severity: warning
annotations:
summary: '{{ $labels.instance }} {{ $labels.mountpoint }} bos alan yuzde 10 altinda'
- alert: BellekAzaliyor
expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.10
for: 10m
labels:
severity: warning
annotations:
summary: '{{ $labels.instance }} kullanilabilir bellek yuzde 10 altinda'
- alert: CpuKullanimiYuksek
expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode='idle'}[5m])) * 100) > 90
for: 15m
labels:
severity: warning
annotations:
summary: '{{ $labels.instance }} CPU kullanimi 15 dakikadir yuzde 90 ustunde'Kural dosyasının prometheus.yml içindeki rule_files bölümünde listelendiğinden emin olun, ardından doğrulayıp yeniden yükleyin.
promtool check rules /etc/prometheus/rules/node-temel.yml
sudo systemctl reload prometheusDoğrulama
Önce node_exporter'ın metrik sunduğunu, sonra Prometheus'un hedefi gördüğünü kanıtlayın.
curl -s http://localhost:9100/metrics | head -n 10
curl -s http://localhost:9100/metrics | grep -c '^node_'
sudo ss -tlnp | grep 9100Beklenen sonuç: metrik satırları ve sıfırdan büyük bir node_ sayısı. Prometheus tarafında web arayüzünde Status > Targets sayfasında hedef UP görünmeli; ifade ekranında up{job='node'} sorgusu 1 döndürmelidir. Uyarı kurallarını denemek için geçici olarak eşiği düşürüp uyarının Alerts sayfasında göründüğüne bakabilirsiniz.
Sık karşılaşılan sorunlar
- Hedef DOWN görünüyor, 'context deadline exceeded': Güvenlik duvarı Prometheus sunucusuna izin vermiyor olabilir. Prometheus makinesinden
curl http://HEDEF:9100/metricskomutunu deneyin. - Servis başlamıyor (RHEL): Çoğunlukla ikili dosya yolu veya SELinux bağlamı kaynaklıdır.
journalctl -u node_exporter -n 30çıktısına bakın;restorecon -v /usr/local/bin/node_exporteryardımcı olabilir. - promtool 'did not find expected key' diyor: YAML girintisi hatalıdır. Sekme karakteri değil boşluk kullandığınızdan emin olun.
- Disk uyarısı çok fazla geliyor: Salt okunur veya geçici dosya sistemlerini
fstypefiltresiyle dışlayın; konteyner yığınlarında overlay yollarını da eleyin. - Uyarı doğru ama bildirim gelmiyor: Uyarı kuralları yalnızca uyarı üretir; bildirim için Alertmanager yapılandırması ayrıca gerekir.
Güvenlik ve bakım notları
- node_exporter portunu (9100) internete açmayın; güvenlik duvarı veya özel ağ ile kısıtlayın.
- İstenmeyen toplayıcıları (collector) kapatarak yüzeyi küçültün; kullanılmayan metrikler yalnızca yük getirir.
- Dışarıdan erişim şartsa ters vekil (reverse proxy) ile TLS ve kimlik doğrulama ekleyin; node_exporter bunu
--web.config.fileile de destekler, ayrıntı için resmî belgeye bakın. - node_exporter ve Prometheus'u güvenlik yamaları için güncel tutun; RHEL'de elle kurduğunuz ikili dosyayı güncellemek de sizin sorumluluğunuzdadır.
- Uyarı eşiklerini gerçek kullanım verisine göre zaman içinde ayarlayın; gürültülü uyarılar gerçek sorunların gözden kaçmasına neden olur.
- Metrik saklama süresini ve depolama alanını izleyin; Prometheus veri dizini zamanla büyür.
Sık sorulan sorular
node_exporter her sunucuya mı kurulmalı?
Evet, izlemek istediğiniz her sunucuda çalışmalıdır; Prometheus bu uçlara bağlanıp metrikleri çeker. Sunucu sayısı arttıkça hedefleri elle yazmak yerine dosya tabanlı veya servis keşfi yöntemlerini kullanabilirsiniz.
node_exporter ile uygulama düzeyinde izleme yapılır mı?
Hayır, yalnızca işletim sistemi ve donanım düzeyi metrikler sağlar. Nginx, MySQL gibi uygulamalar için ayrı exporter'lar kullanılır.
Prometheus ile Grafana aynı şey mi?
Hayır. Prometheus metrikleri toplayıp saklar ve sorgular; Grafana ise bu verileri grafik ve panolarla görselleştirir. İkisi birlikte sıkça kullanılır ama ayrı kurulumlardır.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- NVMe ve SSD sağlık ve yıpranma izleme (smartctl, nvme-cli)NVMe ve SATA SSD sürücülerin sağlığını smartctl ve nvme-cli ile okuyun: yıpranma yüzdesi, yedek blok, hata sayaçları, smartd ile otomatik uyarı kurulumu.
- Dedicated sunucuda donanım ve stres testi (memtester, stress-ng, fio)Yeni teslim alınan dedicated sunucuyu üretime almadan önce memtester, stress-ng ve fio ile RAM, CPU ve disk stres testlerinden geçirin; sonuçları nasıl yorumlayacağınızı öğrenin.
- Dedicated sunucuda ağ bonding (active-backup ve LACP) ile yedekli bağlantı (netplan ve NetworkManager)Dedicated sunucunuzdaki iki ağ kartını bonding ile birleştirin: active-backup ve LACP (802.3ad) kurulumu, netplan ve NetworkManager örnekleri, failover testi.
- Colocation’a sunucu yerleştirmeden önce yapılacaklarSunucuyu colocation veri merkezine göndermeden önce envanter, BMC ve ağ ayarları, güvenlik, yedek ve test adımlarını tamamlayarak kesintisiz bir yerleştirme planlayın.