Prometheus + Grafana ile Sunucu İzleme Stack'i Kurma

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

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.

prometheus.yml
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.

terminal
# 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.

alert_rules.yml
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.

PromQL Sorguları
# 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 →
M

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