
Prometheus + Grafana ile Sunucu İzleme Stack'i Kurma
Sunucularınızın CPU, bellek, disk ve ağ metriklerini gerçek zamanlı izlemek, sorunları proaktif olarak tespit etmenin temelidir. Prometheus metrik toplama ve sorgulama, Grafana ise görselleştirme katmanı olarak birlikte mükemmel bir monitoring stack oluşturur. Bu rehberde kurulumdan dashboard oluştu
Merve Arslan
WordPress & Hosting Uzmanı
Sunucularınızın CPU, bellek, disk ve ağ metriklerini gerçek zamanlı izlemek, sorunları proaktif olarak tespit etmenin temelidir. Prometheus metrik toplama ve sorgulama, Grafana ise görselleştirme katmanı olarak birlikte mükemmel bir monitoring stack oluşturur. Bu rehberde kurulumdan dashboard oluşturmaya, alerting kurallarından PromQL temellerine kadar tüm süreci adım adım inceliyoruz.
Prometheus Mimarisi
Prometheus pull-based bir monitoring sistemidir. Hedef sunuculardaki exporter'lardan belirli aralıklarla metrikleri çeker ve yerel TSDB (Time Series Database) veritabanında saklar. Temel bileşenler şunlardır:
| Bileşen | Görev | Port |
|---|---|---|
| Prometheus Server | Metrik toplama, saklama ve sorgulama | 9090 |
| Node Exporter | Sunucu metrikleri (CPU, RAM, disk, ağ) | 9100 |
| Alertmanager | Alarm yönetimi ve bildirim gönderme | 9093 |
| Grafana | Dashboard ve görselleştirme | 3000 |
Prometheus Yapılandırması
prometheus.yml dosyası, Prometheus'un hangi hedeflerden metrik toplayacağını ve ne sıklıkla scrape yapacağını tanımlar.
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
- "alert_rules.yml"
alerting:
alertmanagers:
- static_configs:
- targets:
- "alertmanager:9093"
scrape_configs:
# Prometheus kendi metriklerini izler
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
# Sunucu metrikleri
- job_name: "node"
static_configs:
- targets:
- "server-1:9100"
- "server-2:9100"
- "server-3:9100"
labels:
env: production
Node Exporter Kurulumu
Node Exporter, Linux sunucularından CPU, bellek, disk ve ağ metriklerini toplayan hafif bir exporter'dır. Her izlenecek sunucuya kurulmalıdır.
# Node Exporter indirme ve kurulum
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
# Systemd service dosyası oluşturma
sudo cat <<EOF > /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# Servisi başlatma
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
# Metrikleri doğrulama
curl http://localhost:9100/metrics | head -20
💡 İpucu: Docker kullanıyorsanız tüm stack'i docker-compose ile tek komutla ayağa kaldırabilirsiniz. Prometheus, Grafana, Node Exporter ve Alertmanager'ı aynı network'te çalıştırın.
Grafana Dashboard ve Alerting Rules
Grafana, Prometheus'tan gelen metrikleri görselleştirmek için kullanılır. Hazır dashboard'lar import edebilir veya kendi dashboard'larınızı oluşturabilirsiniz. Alerting kuralları ile kritik eşik değerleri aşıldığında bildirim alabilirsiniz.
groups:
- name: server_alerts
rules:
# CPU kullanımı %85 üzerinde 5 dakika
- alert: HighCpuUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 5m
labels:
severity: warning
annotations:
summary: "Yüksek CPU kullanımı ({{ $labels.instance }})"
description: "CPU kullanımı {{ $value }}% - 5 dakikadır %85 üzerinde."
# Bellek kullanımı %90 üzerinde
- alert: HighMemoryUsage
expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 90
for: 5m
labels:
severity: critical
annotations:
summary: "Kritik bellek kullanımı ({{ $labels.instance }})"
# Disk doluluk oranı %90 üzerinde
- alert: DiskSpaceLow
expr: (1 - node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 > 90
for: 10m
labels:
severity: critical
⚠️ Dikkat: Alerting kurallarında for süresini çok kısa tutmayın. Geçici spike'lar yanlış alarm (false positive) üretebilir. CPU için 5 dakika, disk için 10 dakika makul başlangıç değerleridir.
PromQL Temelleri
PromQL (Prometheus Query Language), metrikleri sorgulamak ve analiz etmek için kullanılan güçlü bir dildir. Grafana dashboard'larında ve alerting kurallarında PromQL ifadeleri kullanılır.
# CPU kullanım yüzdesi (son 5 dakika ortalaması)
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# Kullanılabilir bellek (GB)
node_memory_MemAvailable_bytes / 1024 / 1024 / 1024
# Disk I/O - saniyedeki okuma/yazma
rate(node_disk_read_bytes_total[5m])
rate(node_disk_written_bytes_total[5m])
# Ağ trafiği (MB/s)
rate(node_network_receive_bytes_total{device="eth0"}[5m]) / 1024 / 1024
# Uptime (gün)
(time() - node_boot_time_seconds) / 86400
Sunucu güvenliği için Sunucu Hardening Checklist rehberimizi, log yönetimi için ELK Stack rehberimizi, IaC ile altyapı yönetimi için Terraform rehberimizi inceleyin. Prometheus Resmi Dokümantasyonu ve Grafana Dokümantasyonu ek kaynak olarak faydalıdır.
Sıkça Sorulan Sorular
Prometheus ne kadar disk alanı kullanır?
Disk kullanımı metrik sayısına ve retention süresine bağlıdır. Ortalama bir kurulumda (100 hedef, 15s scrape interval, 15 gün retention) yaklaşık 10-20 GB disk alanı yeterlidir. --storage.tsdb.retention.time=15d parametresi ile retention süresini ayarlayabilirsiniz.
Grafana'da hazır dashboard nasıl import edilir?
Grafana.com'daki dashboard marketplace'ten ID ile import edebilirsiniz. Node Exporter için 1860 numaralı dashboard popülerdir. Grafana UI'da Dashboards > Import > ID girin ve Prometheus data source'u seçin.
Prometheus yüksek erişilebilirlik (HA) nasıl sağlanır?
İki Prometheus instance'ı aynı hedefleri scrape edecek şekilde yapılandırın. Uzun süreli depolama için Thanos veya Cortex kullanabilirsiniz. Alertmanager cluster modu ile alarm deduplikasyonu sağlanır.
Push-based monitoring ile farkı nedir?
Prometheus pull-based çalışır, yani hedeflerden metrikleri çeker. Push-based sistemlerde (Datadog, InfluxDB gibi) uygulamalar metrikleri gönderir. Pull-based yaklaşım, hedeflerin sağlık durumunu otomatik tespit eder ve merkezi yapılandırma sağlar.
Sonuç
Prometheus ve Grafana ile güçlü bir sunucu izleme stack'i kurarak altyapınızı proaktif olarak izleyin. Node Exporter ile sistem metriklerini toplayın, PromQL ile anlamlı sorgular yazın, Grafana dashboard'ları ile görselleştirin ve alerting kuralları ile sorunları erken tespit edin.
Monitoring İçin Yüksek Performanslı Sunucular
Hosted Cloud sunucuları ile Prometheus + Grafana stack'inizi güvenle çalıştırın.
Bulut Sunucu Planlarını İncele →Merve Arslan
WordPress & Hosting Uzmanı
WordPress performans optimizasyonu, hosting seçimi ve e-ticaret altyapıları üzerine rehber içerikler hazırlamaktadır.
Yorumlar yakında