Sunucu İzleme Araçlarıyla Proaktif Operasyon: Temel Kavramlar ve Uygulama Örnekleri
Sunucu izleme araçlarının temel prensiplerini, popüler açık kaynak çözümlerini ve gerçek ortamda uygulanabilecek örnek yapılandırmaları anlatan kapsamlı bir rehber.
Caner Serbest
Sistem ve Altyapı
6 dk okuma
Sunucu İzleme Araçlarıyla Proaktif Operasyon: Temel Kavramlar ve Uygulama Örnekleri
Sunucu ortamları büyüdükçe, performans, güvenilirlik ve güvenlik konularına yönelik proaktif bir yaklaşım kaçınılmaz hâle gelir. İzleme, yalnızca bir arıza anında müdahale aracı değil, aynı zamanda kapasite planlaması, güvenlik denetimi ve hizmet seviyesinin (SLA) korunması için de kritik bir bileşendir. Bu makalede, izleme sistemlerinin temel bileşenlerini açıklayacak, popüler açık kaynak çözümlerine (Prometheus, Grafana, Zabbix ve Nagios) kısa bir göz atacak ve gerçek bir Linux sunucu ortamında basit bir izleme zinciri kurmanın adımlarını göstereceğim.
1. İzleme Sisteminin Temel Bileşenleri
- Metric Collector (Veri Toplayıcı) – Sunuculardan ve uygulamalardan metrikleri toplar. Örneğin node_exporter (Prometheus) ya da Zabbix agent.
- Time‑Series Database (Zaman Serisi Veritabanı) – Toplanan verileri zaman damgasıyla saklar. Prometheus kendi TSDB’sine sahiptir, Zabbix ise MySQL/PostgreSQL gibi bir RDBMS kullanır.
- Alerting Engine (Uyarı Motoru) – Belirlenen eşik değerler aşıldığında alarm üretir. Prometheus Alertmanager, Zabbix’in yerleşik alarm sistemi bu işlevi görür.
- Visualization (Görselleştirme) – Toplanan metriklerin grafik, tablo veya pano (dashboard) şeklinde sunulması. Grafana, Zabbix UI ve Kibana en çok tercih edilen araçlardır.
- Exporters / Plugins (Veri Aktarıcıları) – Uygulama ve hizmetlerin metriklerini standart bir formatta dışa aktarır. Örnek: mysqld_exporter, blackbox_exporter.
Bu bileşenlerin birbirine tutarlı bir şekilde bağlanması, izleme zincirinin sağlıklı çalışmasını garantiler.
2. Popüler Açık Kaynak İzleme Çözümleri
| Araç | Kullanım Alanı | Öne Çıkan Özellik | En Uygun Senaryo |
|---|---|---|---|
| Prometheus | Zaman serisi veri toplama | Pull‑model, etiket‑tabanlı veri, güçlü sorgu dili (PromQL) | Mikro‑servis ve konteyner ortamları |
| Grafana | Görselleştirme | Çoklu veri kaynağı desteği, dinamik panolar | Tek bir UI üzerinden farklı TSDB’leri izlemek |
| Zabbix | Tam‑entegre izleme platformu | Agent‑ve‑proxy mimarisi, otomatik keşif, detaylı alarm kuralları | Geleneksel veri merkezi ve hibrit ortamlar |
| Nagios Core | Servis ve host izleme | Modüler yapı, eklenti tabanlı kontrol | Küçük ölçekli ortamlar ve özelleştirilmiş scriptler |
Bu tablo, farklı senaryolara göre hangi aracın tercih edilebileceğini özetler. Aşağıda, Prometheus + Grafana kombinasyonunu örnek bir yapılandırma üzerinden inceleyeceğiz.
3. Örnek Senaryo: Linux Sunucusunda Prometheus‑Grafana Zinciri
3.1 Gereksinimler
- Ubuntu 22.04 LTS (ya da CentOS 8) üzerinde bir sanal makine
- root ya da sudo yetkisi
- internet erişimi (paket indirme ve dışarıdan metrik toplama için)
3.2 Adım‑Adım Kurulum
3.2.1 Prometheus ve node_exporter kurulumu
# Sistem güncellemesi
sudo apt update && sudo apt upgrade -y
# Prometheus paketini resmi repo üzerinden ekleyelim
sudo apt install -y wget gnupg2
wget -qO - https://packages.prometheus.io/gpg.key | sudo apt-key add -
echo "deb https://packages.prometheus.io/deb stable main" | sudo tee /etc/apt/sources.list.d/prometheus.list
sudo apt update
sudo apt install -y prometheus
# node_exporter'i indir ve çalıştır
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz -O /tmp/node_exporter.tar.gz
sudo tar -xzf /tmp/node_exporter.tar.gz -C /opt
sudo mv /opt/node_exporter-1.7.0.linux-amd64 /opt/node_exporter
# systemd servisi oluştur
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<'EOF'
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
User=nobody
ExecStart=/opt/node_exporter/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
Bu adımlardan sonra http://<sunucu_ip>:9100/metrics adresinde metrikler erişilebilir olacaktır.
3.2.2 Prometheus yapılandırması
Prometheus’un prometheus.yml dosyasına aşağıdaki job tanımını ekleyin:
# /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
Değişiklikleri uygulamak için hizmeti yeniden başlatın:
sudo systemctl restart prometheus
3.2.3 Grafana kurulumu ve veri kaynağı ekleme
# Grafana resmi repo ekleniyor
sudo apt install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt update
sudo apt install -y grafana
sudo systemctl enable --now grafana-server
Web tarayıcınızda http://<sunucu_ip>:3000 adresine gidin. Varsayılan kimlik bilgileri admin / admin dir. İlk girişte şifre değiştirmeniz istenecektir.
Grafana UI üzerinden:
- Configuration → Data Sources → Add data source
- Prometheus seçin.
- URL kısmına
http://localhost:9090yazın ve Save & Test ile bağlantıyı doğrulayın.
3.2.4 Basit bir Dashboard oluşturma
Grafana’da Create → Dashboard → Add new panel adımlarını izleyin. Aşağıdaki PromQL sorgularını kullanabilirsiniz:
- CPU kullanım yüzdesi
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) - Bellek kullanım oranı
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 - Disk I/O bekleme süresi
rate(node_disk_io_time_seconds_total[5m])
Bu panoları kaydedip, Share → Snapshot seçeneği ile anlık görüntü alabilirsiniz.
4. Alarm Tanımlama: Alertmanager Kullanımı
Prometheus yalnızca veri toplar; eşik aşıldığında bildirim göndermek için Alertmanager gerekir.
sudo apt install -y alertmanager
/etc/alertmanager/alertmanager.yml dosyasını aşağıdaki gibi düzenleyin (örnek e‑posta alıcısı):
global:
resolve_timeout: 5m
receivers:
- name: 'mail'
email_configs:
- to: '[email protected]'
from: '[email protected]'
smarthost: 'smtp.example.com:587'
auth_username: '[email protected]'
auth_password: '******'
route:
group_by: ['alertname']
receiver: 'mail'
repeat_interval: 1h
Prometheus yapılandırmasına Alertmanager entegrasyonu ekleyin:
# /etc/prometheus/prometheus.yml (ekstra bölüm)
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
rule_files:
- "alert.rules.yml"
Şimdi alert.rules.yml içinde basit bir kural tanımlayalım:
groups:
- name: node_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 2m
labels:
severity: critical
annotations:
summary: "CPU kullanımı yüksek ({{ $labels.instance }})"
description: "CPU kullanımı son 2 dakikada %85'i aştı. Şu anki değer: {{ $value }}"
Yapılandırma dosyalarını kaydedip servisleri yeniden başlatın:
sudo systemctl restart prometheus
sudo systemctl restart alertmanager
Alertmanager UI (http://<ip>:9093) üzerinden aktif alarmları izleyebilir ve geçmiş olayları inceleyebilirsiniz.
5. Zabbix’e Kısa Bir Bakış
Prometheus‑Grafana kombini bulut‑yerel ve konteyner‑ağırlıklı ortamlar için idealdir, fakat klasik veri merkezlerinde hâlâ Zabbix tercih edilir. Zabbix’in öne çıkan özellikleri:
- Agent‑ve‑Proxy mimarisi: Ağ içinde ve dışındaki cihazları tek bir konsoldan izleme.
- Otomatik keşif: IP aralıkları üzerinden cihaz bulma ve şablon atama.
- Detaylı trigger‑ve‑action mekanizması: Birden fazla koşul ve zaman dilimi tanımlayarak karmaşık alarm senaryoları oluşturma.
Zabbix kurulumu, zabbix_server, zabbix_agentd ve zabbix_frontend paketlerini içerir. Kurulum adımları, resmi dokümantasyonda adım‑adım anlatılmıştır; burada sadece temel bir yapılandırma örneği veriyoruz.
# Ubuntu örneği
sudo apt install -y zabbix-server-pgsql zabbix-frontend-php zabbix-apache-conf zabbix-agent
# PostgreSQL veritabanı oluşturma
sudo -u postgres psql -c "CREATE DATABASE zabbix;"
sudo -u postgres psql -c "CREATE USER zabbix WITH PASSWORD 'zabbix_pass';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;"
/etc/zabbix/zabbix_server.conf içinde DB bağlantı bilgilerini güncelledikten sonra hizmeti başlatın:
sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2
Web arayüzünden (http://<ip>/zabbix) ilk kurulum sihirbazını tamamlayıp, Linux Server şablonunu hostunuza atayın. Şablon, CPU, bellek, disk ve ağ metriklerini otomatik olarak toplar.
6. İzleme Stratejileri ve En İyi Praktikler
- Kritik İş Yüklerini Önceliklendirin – Tüm servisleri aynı anda izlemek yerine, iş sürekliliği açısından en önemli uygulamalara alarm eşikleri tanımlayın.
- Eşik Değerleri Dinamik Tutun – Tek bir sabit eşik yerine, geçmiş ortalamalar ve trend analizine dayalı anomaly detection yaklaşımları (örnek: Prometheus‑Alertmanager’da
forsüresi,increase()fonksiyonu) daha az yanlış alarm üretir. - Veri Saklama Süresini Planlayın – TSDB’lerde veri saklama süresi maliyetle doğrudan ilişkilidir. Örneğin, 15‑saniyelik örnekleme ile 30‑günlük saklama, orta ölçekli bir ortam için makul bir dengedir.
- Dashboard’ları İşbirliği İçin Paylaşın – Grafana’da team rolü oluşturarak, farklı departmanların kendi panolarını görmesini sağlayın ve tek bir kaynaktan veri tutarlılığı sağlayın.
- Kayıt (Log) ve Metrik Entegrasyonu – Metrik bir alarm tetiklendiğinde ilgili logları otomatik olarak çekmek, sorunun kök neden analizini hızlandırır. Loki (Grafana Labs) gibi log toplama çözümleri, Prometheus ile aynı etiket modelini kullanır.
7. Sonuç
Sunucu izleme, yalnızca bir “monitor” kurmak değil, proaktif bir operasyon kültürü oluşturmak demektir. Prometheus‑Grafana, esnek veri toplama ve güçlü görselleştirme sunarken; Zabbix ve Nagios gibi geleneksel araçlar, kapsamlı alarm yönetimi ve otomatik keşif özellikleriyle veri merkezlerinde hâlâ değerli konumdadır.
Bu rehberde, temel bileşenleri, popüler araçları ve gerçek bir Linux sunucu üzerinde adım‑adım bir izleme zinciri kurulumunu gösterdik. Okuyucular, burada elde ettikleri bilgiyle kendi ortamlarına uygun izleme stratejisini belirleyebilir, alarm eşiklerini optimize edebilir ve uzun vadeli operasyonel sürdürülebilirliği sağlayabilir.
İpucu: İzleme sisteminizi kurduktan sonra, düzenli bakım (örneğin TSDB temizleme, dashboard gözden geçirme ve alarm parametrelerini güncelleme) yapmayı unutmayın. Böylece izleme altyapınız zaman içinde yıpranmaz ve gerçek zamanlı farkındalık her zaman korunur.
Bu makale, Caner Serbest’in teknik blog serisinin bir parçası olarak hazırlanmıştır. Daha fazla içerik ve güncel konular için blogu takip etmeyi unutmayın.
Bu yazı Groq ile otomatik oluşturulmuştur.