Prometheus Tabanlı İzleme Sistemi: Kurulum, Mimari Analiz ve Teknik Değerlendirme
Docker Compose ile kurulan Prometheus tabanlı bir izleme sisteminin mimarisini, kurulum sürecini ve Zabbix/Datadog ile teknik karşılaştırmasını ele alan bir yüksek lisans ders ödevi.

Bu çalışma, bulut bilişim dersi kapsamında hazırlanmış, Prometheus tabanlı bir izleme sisteminin kurulumunu, mimari analizini ve teknik değerlendirmesini ele alan bir ödevdir.
Motivasyon
Modern bulut bilişim ekosistemi, uygulamaların taşınabilirliğini ve ölçeklenebilirliğini artırmak amacıyla konteyner tabanlı mikro hizmet mimarilerine doğru evrilmiştir. Kubernetes'ten sonra CNCF (Cloud Native Computing Foundation) çatısı altında "Graduated" seviyesine ulaşan ilk projelerden biri olan Prometheus, bu ekosistemin merkezinde yer alır. Geleneksel izleme araçlarının aksine, her veri noktasını metrik adı ve anahtar-değer etiketleriyle (labels) tanımlayarak Kubernetes gibi dinamik ortamlarda çok boyutlu, esnek sorgulama imkânı sunar.
Mimari
Prometheus'un mimarisi yüksek ölçeklenebilirlik için tasarlanmıştır. Sistem "pull-based" (çekme tabanlı) bir model kullanır: hedeflerin veri göndermesini beklemek yerine, servis keşif mekanizmalarıyla hedefleri bulur ve HTTP üzerinden periyodik olarak metrikleri "kazır" (scrape). Temel bileşenler:
- Prometheus Server: sistemin "beyni" - Retrieval birimi (metrik toplar), TSDB (Zaman Serisi Veritabanı, yüksek sıkıştırmayla veri saklar) ve HTTP Server (PromQL sorgularını Grafana'ya veya arayüze sunar).
- Exporters: üçüncü taraf servislerin (Linux çekirdeği, MySQL vb.) metriklerini Prometheus formatına çevirir.
- Pushgateway: "pull" modeline uymayan kısa ömürlü batch işler için ara birim.
- Alertmanager: uyarıları gruplandırır, sessize alır ve Slack/e-posta/PagerDuty'ye yönlendirir.
Kurulum Süreci (Docker Compose ile)
İzleme altyapısı, Docker ve Docker Compose kullanılarak yerel bir ortamda üç servis bir araya getirilerek kuruldu:
- Prometheus (port 9090): metrikleri toplar ve saklar, prometheus.yml ile 15 saniyelik scrape aralığında yapılandırıldı.
- Node Exporter (port 9100): ana makinenin donanım metriklerini (CPU, RAM, disk) Prometheus formatına çevirir.
- Grafana (port 3000): toplanan verileri görselleştirir, depends_on: prometheus ile servis hiyerarşisi kuruldu.

Karşılaşılan Sorunlar ve Çözümler
Kurulum sırasında iki sorunla karşılaşıldı:
- Erişim/izin hatası (Permission Denied): Prometheus konteyneri konfigürasyon dosyasını okurken yetki hatası verdi. chown komutu ile dosya izinleri düzenlenerek ve Docker volume izinleri güncellenerek çözüldü.
- Network iletişim hatası: konteynerler birbirine localhost üzerinden erişemedi. Docker'ın iç DNS mekanizması kullanılarak servis isimleri (prometheus, node-exporter) üzerinden haberleşme sağlanarak çözüldü.
Doğrulama
docker compose up -d komutu çalıştırıldıktan sonra üç imaj da başarıyla indirilip konteynerler ayağa kalktı. Prometheus arayüzü (localhost:9090) üzerinden Status → Targets sekmesi kontrol edildiğinde, her iki uç noktanın da başarıyla "kazındığı" ve UP statüsünde olduğu doğrulandı.
Deneyim ve Görselleştirme
Prometheus, veri kaynağı olarak Grafana'ya bağlanıp Node Exporter Full dashboard'u içeri aktarıldıktan sonra, CPU/RAM/disk metrikleri saniyeler bazında yüksek çözünürlükle izlenebilir hale geldi - PromQL sorguları Grafana'nın dinamik dashboard değişkenleriyle birleştirildi.
Karşılaştırma: Prometheus vs. Zabbix vs. Datadog
| Kriter | Prometheus | Zabbix | Datadog |
|---|---|---|---|
| Mimari Felsefesi | Bulut-Yerel | Geleneksel/Monolitik | Hibrit/SaaS |
| Veri Toplama | Pull | Push & Pull (ağırlıklı Push) | Push (ajan tabanlı) |
| Veri Modeli | Çok Boyutlu (Labels/TSDB) | İlişkisel (RDBMS) | Çok Boyutlu (Tags/SaaS) |
| Servis Keşfi | Tam Otomatik (K8s Entegre) | Kısmi/Manuel | Otomatik |
| Öğrenme Eğrisi | Orta (PromQL) | Yüksek (karmaşık arayüz) | Düşük (kullanıcı dostu) |
| Maliyet | Ücretsiz (açık kaynak) | Ücretsiz (açık kaynak) | Ücretli (metrik başına) |
| Topluluk | Çok Güçlü (CNCF Graduated) | Güçlü (köklü) | Kurumsal destek |
Güçlü ve Zayıf Yönler
Güçlü Yönler:
- Dinamik servis keşfi - sürekli ölçeklenen mikro hizmet ortamlarında yeni hedefleri otomatik izler.
- Operasyonel basitlik - dış veritabanı bağımlılığı olmadan, kendi yüksek performanslı TSDB'si üzerinden çalışır.
- Gelişmiş sorgulama - PromQL ile karmaşık matematiksel analiz ve anomali tespiti mümkün.
Zayıf Yönler:
- Uzun süreli (yıllık) veri saklama için varsayılan olarak tasarlanmamış - Thanos veya Cortex gibi ek çözümler gerekir.
- Öğrenme eğrisi - SQL tabanlı sorgulamaya alışkın ekipler için PromQL başlangıçta zorlayıcı olabilir.
Sonuç ve Öneriler
Konteynerleştirilmiş, Kubernetes tabanlı altyapılarda Prometheus, yerel entegrasyonu ve otomatik servis keşfi sayesinde açık ara en uygun seçimdir. Saniyelik izleme çözünürlüğünün kritik olduğu sektörlerde (finans, e-ticaret) düşük gecikmeli veri hattı büyük avantaj sağlar. Maliyet ve veri gizliliği odaklı projelerde, tamamen açık kaynaklı yapısı Datadog gibi SaaS alternatiflerine karşı öne çıkar. Hibrit ortamlarda ise statik ağ donanımı için Zabbix, uygulama seviyesi metrikler için Prometheus kullanan karma bir yaklaşım operasyonel verimliliği maksimize edebilir.
Prometheus, gözlemlenebilirlik disiplinini reaktif bir yapıdan (hata sonrası müdahale) proaktif bir yapıya (hata oluşmadan tespit) dönüştüren, modern bulut bilişim dünyasının vazgeçilmez bir bileşenidir.

