Prometheus ve Grafana ile 7/24 Sunucu İzleme Nasıl Yapılır?

Prometheus ve Grafana ile 7/24 Sunucu İzleme Nasıl Yapılır?

Giriş
Modern uygulamalar ve sunucu altyapıları, kesintisiz hizmet ve yüksek performans garantisi gerektirir. Beklenmeyen CPU patlamaları, bellek sızıntıları veya disk doluluk seviyelerindeki ani artışlar zamanında fark edilmezse kullanıcı deneyimi olumsuz etkilenir, maliyetler artar. Prometheus ve Grafana ikilisi, açık kaynak ekosisteminin en güçlü izleme ve görselleştirme araçlarıdır. Prometheus, ölçeklenebilir veri toplama ve esnek sorgu diliyle (PromQL) gerçek zamanlı metriklerinizi toplarken; Grafana, bu metrikleri canlı panolar halinde görselleştirmenizi, geçmiş trendleri analiz etmenizi ve kritik eşik aşımlarında uyarı almanızı sağlar. Bu rehberde, adım adım 7/24 sunucu izleme çözümünüzü kuracak, konfigürasyon örnekleri ve en iyi uygulamalarla sağlam bir altyapı oluşturacaksınız.

1. Altyapı Mimarisi ve Bileşenler
Prometheus ve Grafana tabanlı bir izleme çözümünün temel bileşenleri şunlardır:

  • Prometheus sunucusu: Metrikleri periyodik olarak toplar ve saklar
  • Exporter’lar: Sunucu (node_exporter), Docker (cAdvisor), veri tabanı (mysql_exporter) gibi farklı katmanlardaki metrikleri dışa aktarır
  • Alertmanager: Prometheus’tan gelen uyarıları alır, gruplar ve Slack/ e-posta/ Webhook aracılığıyla iletir
  • Grafana: Prometheus veritabanını veri kaynağı olarak tanır, gösterge tabloları (dashboard) oluşturur
  • Zamanlanmış yedekleme ve ölçeklenebilirlik katmanı: Uzun süreli veri saklama veya yüksek hacimli metrik toplama ihtiyaçlarında Thanos veya Cortex gibi sisteme entegre edilebilir

2. Prometheus Kurulumu ve Temel Konfigürasyon
Sunucunuza Prometheus’u indirmek ve kurmak için resmi ikili dağıtım paketini kullanabilirsiniz. Örnek Ubuntu/Debian ortamı:

  1. Prometheus’u indirin ve açın
  2. wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
  3. tar xvfz prometheus-*.tar.gz
  4. cd prometheus-*
  5. Sistem servisi olarak yapılandırma
    /etc/systemd/system/prometheus.service dosyasını şu içerikle oluşturun
  6. [Unit]
  7. Description=Prometheus
  8. Wants=network-online.target
  9. After=network-online.target
  10.  
  11. [Service]
  12. User=prometheus
  13. ExecStart=/usr/local/bin/prometheus \
  14.   –config.file=/etc/prometheus/prometheus.yml \
  15.   –storage.tsdb.path=/var/lib/prometheus/data \
  16.   –web.console.templates=/etc/prometheus/consoles \
  17.   –web.console.libraries=/etc/prometheus/console_libraries
  18.  
  19. [Install]
  20. WantedBy=multi-user.target
  21. Konfigürasyon dosyası
    /etc/prometheus/prometheus.yml içinde takip edilecek hedefleri tanımlayın
  22. global:
  23.   scrape_interval: 15s
  24.   evaluation_interval: 15s
  25.  
  26. scrape_configs:
  27.   – job_name: ‘node_exporter’
  28.     static_configs:
  29.       – targets: [‘server1:9100′,’server2:9100’]
  30. Servisi başlatıp durumunu kontrol edin
  31. systemctl daemon-reload
  32. systemctl enable prometheus
  33. systemctl start prometheus
  34. systemctl status prometheus

3. Node Exporter ile Sunucu Metrikleri Toplama
Her izlenecek sunucuya Node Exporter kurarak CPU, bellek, disk, network gibi temel metrikleri Prometheus’a sunun:

  1. Node Exporter’ı indirin ve çalıştırın
  2. wget https://github.com/prometheus/node_exporter/releases/download/v1.7.1/node_exporter-1.7.1.linux-amd64.tar.gz
  3. tar xvfz node_exporter-*.tar.gz
  4. sudo mv node_exporter-*/node_exporter /usr/local/bin/
  5. Systemd servisi oluşturun
    /etc/systemd/system/node_exporter.service
  6. [Unit]
  7. Description=Node Exporter
  8. After=network.target
  9.  
  10. [Service]
  11. User=node_exporter
  12. ExecStart=/usr/local/bin/node_exporter
  13.  
  14. [Install]
  15. WantedBy=default.target
  16. Başlatın ve otomatik başlama ayarlayın
  17. systemctl daemon-reload
  18. systemctl enable node_exporter
  19. systemctl start node_exporter
  20. Prometheus konfigürasyonunda targets listesine sunucu adresini ekleyin; ardından systemctl restart prometheus ile yeniden yükleyin.

4. Grafana Kurulumu ve Dashboard Oluşturma
Grafana, Prometheus’tan verileri çekerek dinamik görseller oluşturur. Kurulum:

  1. Grafana apt deposunu ekleyin ve kurun
  2. sudo apt-get install -y software-properties-common
  3. wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add –
  4. sudo add-apt-repository “deb https://packages.grafana.com/oss/deb stable main”
  5. sudo apt-get update
  6. sudo apt-get install grafana
  7. Servisi başlatın
  8. systemctl enable grafana-server
  9. systemctl start grafana-server
  1. Web arayüzüne (http://sunucu_ip:3000) admin/admin ile giriş yapın, parola değiştirin
  2. Prometheus veri kaynağını ekleyin
    Configuration → Data Sources → Add data source adımlarını takip edip URL olarak http://localhost:9090 girin
  3. Hazır dashboard’lardan faydalanın
    Dashboards → Import sekmesinden “Node Exporter Full” (ID 1860) veya “Node Exporter for Prometheus” (ID 8919) gibi popüler panoları yükleyin

5. Uyarı Mekanizmaları ile Proaktif Müdahale
Kesintisiz izleme kadar, kritik eşik aşımında otomatik bildirim almak da önemli. Prometheus Alertmanager entegrasyonu:

  1. Alertmanager kurulum dosyası oluşturun
    /etc/alertmanager/config.yml
  2. global:
  3.   resolve_timeout: 5m
  4.  
  5. route:
  6.   receiver: ‘slack-notifications’
  7.   group_wait: 30s
  8.   repeat_interval: 2h
  9.  
  10. receivers:
  11.   – name: ‘slack-notifications’
  12.     slack_configs:
  13.       – api_url: ‘https://hooks.slack.com/services/XXX/YYY/ZZZ’
  14.         channel: ‘#alerts’
  1. Systemd servisini tanımlayın ve başlatın
  2. Prometheus uyarı kurallarını ekleyin
    /etc/prometheus/rules.yml
  3. groups:
  4.   – name: node_alerts
  5.     rules:
  6.       – alert: HighCpuUsage
  7.         expr: 100 – (avg by(instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 85
  8.         for: 5m
  9.         labels:
  10.           severity: warning
  11.         annotations:
  12.           summary: “{{ $labels.instance }} CPU kullanımı yüksek”
  13.           description: “CPU kullanımı son 5 dakikada %{{ printf \”%.2f\” $value }} oldu.”

Prometheus konfigürasyonunda rule_files: içine bu dosyayı ekleyip servisi yeniden başlatın.

6. Veri Saklama ve Ölçeklenebilirlik
Prometheus’un yerel depolaması, uzun süreli metrik saklama için ideal değildir. 7/24 izleme verilerinizi aylar boyu saklamak veya yüksek çözünürlüklü metrikleri uzun dönemde tutmak için:

  • Thanos veya Cortex gibi projelerle bucket bazlı uzaktan depolama
  • Prometheus’a memory ve disk sınırları koyarak node-exporter bazında etiketli veri silme politikaları
  • Retention ayarını –storage.tsdb.retention.time=30d gibi bir değere çekerek yerel veri yaşını belirleme

7. Güvenlik ve Erişim Kontrolleri

  • Prometheus ve Grafana panellerinizi mutlaka HTTP Basic Auth veya OAuth (GitHub, Google) ile koruyun
  • HTTPS sertifikası kullanarak TLS uçtan uca şifreleme sağlayın
  • Grafana dashboard erişimini rol tabanlı kontrol (RBAC) ile kısıtlayın
  • Prometheus’a ortam etiketlemesi (environment, datacenter) ekleyerek yalnızca yetkili kullanıcıların gözetim alanlarını görmesini sağlayın

8. En İyi Uygulamalar

  • Metrik adlandırmalarında snake_case kullanın; etiket adlarında tutarlılığa dikkat edin
  • Yüksek hacimli metrikleri toplarken scrape_interval ve scrape_timeout ayarlarını dikkatle planlayın
  • Anahtar CPU, bellek, disk, network, filesystem, load average gibi temel SLI/SLO metriklerini belirleyip önceliklendirin
  • Dashboard’larda uyarıcı görseller (color thresholds) ve anotasyonlar ekleyerek operasyon ekibine hızlı özet sunun
  • Düzenli bakım zamanlarında node_exporter ve Prometheus servis güncellemelerini planlayın

Sonuç
Prometheus ve Grafana’yı entegre ederek kuracağınız 7/24 izleme çözümü, altyapı operasyonlarınızı proaktif hâle getirir, kritik anormallikleri anında fark etmenizi sağlar ve uzun dönemde performans trendlerinizi ölçerek kapasite planlamanızı destekler. Adım adım kurulum, exporter entegrasyonu, alerting ile erken uyarı, görselleştirme ve veri saklama stratejileriyle hem küçük ölçekli sunucularda hem de büyük veri merkezlerinde ölçeklenebilir ve güvenilir bir izleme sistemi inşa edebilirsiniz.