Prometheus ve Grafana Nedir? Temel Kavramların Açıklaması

Prometheus, açık kaynaklı bir zaman serisi veritabanı (TSDB) ve izleme sistemidir. Özellikle mikroservis mimarilerinde, konteyner tabanlı ortamlarda ve bulut altyapılarında metrik toplama, depolama ve sorgulama için tasarlanmıştır. Prometheus’un en büyük avantajı, pull tabanlı veri toplama modelidir; bu sayede hedef sistemler (örneğin bir VDS sunucu paketleri) kendi metriklerini bir HTTP endpoint üzerinden sunar ve Prometheus periyodik olarak bu endpoint’i sorgular.
Grafana ise Prometheus gibi veri kaynaklarından gelen zaman serisi verilerini görselleştiren, kullanıcı dostu bir dashboard platformudur. Grafana’nın sürükle‑bırak arayüzü, özelleştirilebilir panelleri ve uyarı (alert) entegrasyonları sayesinde teknik ekipler, performans sorunlarını anında tespit edebilir. Grafana, Prometheus dışında InfluxDB, Elasticsearch ve MySQL gibi birçok veri kaynağını da destekler, bu da onu tek bir panelde çoklu izleme çözümü haline getirir.
Bu iki araç birlikte çalıştığında, sisteminizdeki CPU, bellek, ağ trafiği, uygulama yanıt süresi gibi kritik metrikleri %99,9 güvenilirlikle toplar, saklar ve gerçek zamanlı olarak görselleştirir. Sonuçta, olası bir aksaklık önceden tespit edilip müdahale edilebilir, böylece hizmet kesintileri minimuma indirilir.
Kurulum ve İlk Konfigürasyon: Adım Adım Prometheus + Grafana
Kurulum sürecine başlamadan önce, izleme yapacağınız ortamın minimum gereksinimlerini kontrol edin. Örneğin, AMD Ryzen VDS sunucular 8 çekirdek ve 16 GB RAM ile Prometheus ve Grafana’yı sorunsuz çalıştırabilir. Aşağıdaki adımlar, Ubuntu 22.04 LTS üzerinde iki bileşeni kurmayı gösterir.
- Prometheus’u indirin ve kurun:
wget https://github.com/prometheus/prometheus/releases/download/v2.50.0/prometheus-2.50.0.linux-amd64.tar.gzardındantar xvfz prometheus-*.tar.gzvesudo mv prometheus-*/ /usr/local/prometheuskomutlarıyla dizine taşıyın. - Prometheus konfigürasyon dosyasını düzenleyin:
/usr/local/prometheus/prometheus.ymliçindescrape_configsbölümü ekleyerek izlemek istediğiniz hedefleri tanımlayın. Örneğin,node_exporteriçintargets: ['localhost:9100']ekleyin. - Prometheus servisini başlatın:
sudo systemctl enable prometheusvesudo systemctl start prometheusile servis otomatik açılır. - Grafana’yı kurun:
sudo apt-get install -y apt-transport-httpsardından Grafana repo ekleyin vesudo apt-get install grafanakomutuyla kurulum tamamlayın. - Grafana’yı başlatın ve web arayüzüne bağlanın:
sudo systemctl enable grafana-servervesudo systemctl start grafana-server. Tarayıcıdahttp://sunucu_ip:3000adresine gidin, varsayılan kullanıcı/şifre admin/admin ile giriş yapın. - Prometheus veri kaynağını ekleyin: Grafana’da “Configuration → Data Sources → Add data source” menüsünden Prometheus’u seçin, URL olarak
http://localhost:9090girin ve “Save & Test” ile bağlantıyı doğrulayın.
Kurulum tamamlandığında, Grafana’da hazır şablonları (templates) kullanarak CPU kullanım grafiği, disk I/O ve ağ trafiği gibi panelleri hızla oluşturabilirsiniz. Bu aşamada, WordPress hosting gibi uygulamalara özgü metrikleri toplamak için ek exporter’lar (örneğin mysqld_exporter) eklemek de mümkündür.
Uyarı (Alert) Sistemleri: Prometheus Alertmanager ile Proaktif Müdahale
İzleme yalnızca veri toplamakla sınırlı kalmamalı; aynı zamanda kritik eşiklerin aşılması durumunda otomatik bildirimler göndermelidir. Prometheus, Alertmanager adlı bir bileşenle bu ihtiyacı karşılar. Alertmanager, tanımlanan kurallara göre e‑posta, Slack, Microsoft Teams gibi kanallara uyarı gönderir.
Alert kurallarını alert.rules.yml dosyasında tanımlarken, örnek bir kural şu şekildedir:
groups:
- name: instance_down
rules:
- alert: InstanceDown
expr: up == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Instance {{ $labels.instance }} down"
description: "{{ $labels.instance }} has been down for more than 2 minutes."
Bu kural, bir hedefin up metriği 2 dakikadan uzun bir süre 0 olursa “InstanceDown” uyarısını tetikler. Alertmanager’da receivers kısmına SMTP sunucusu bilgileri ekleyerek kurumsal e-posta üzerinden bildirim alabilirsiniz. Ayrıca, uyarıların “silence” (geçici durdurma) özelliği sayesinde, planlı bakım dönemlerinde gereksiz bildirimlerin önüne geçilir.
Performans ve Ölçeklenebilirlik: Prometheus’un Sınırlarını Zorlamak

Prometheus, yüksek veri hacmiyle başa çıkabilmek için birkaç strateji sunar. İlk olarak, retention (saklama süresi) ayarını --storage.tsdb.retention.time=30d gibi bir değere getirerek eski verilerin otomatik silinmesini sağlayabilirsiniz. İkinci olarak, sharding yani veri bölme yöntemiyle birden fazla Prometheus sunucusu kurarak yükü dağıtabilirsiniz.
Ölçeklenebilirliği artırmak için fiziksel sunucu (dedicated server) tercih edilebilir; bu sayede I/O gecikmesi %30 azalır ve sorgu yanıt süresi ortalama 120 ms’den 80 ms’ye düşer. Ayrıca, Prometheus’un remote_write özelliği ile metrikleri Thanos veya VictoriaMetrics gibi uzun vadeli depolama sistemlerine yönlendirebilir, böyleca veri kaybı riski minimuma iner.
Grafana’da ise panel yenileme sıklığını (refresh interval) 5 saniye yerine 30 saniye olarak ayarlamak, sunucu üzerindeki yükü %15 oranında azaltır. Bu tür ince ayarlar, özellikle yoğun trafik alan e‑ticaret hosting ortamlarında kritik öneme sahiptir.
Gerçek Dünya Senaryosu: Mikroservis Mimarisi Üzerinde İzleme
Bir e‑ticaret sitesinin mikroservis tabanlı mimarisinde, her servis (kullanıcı yönetimi, ürün kataloğu, ödeme) ayrı bir Docker konteyneri olarak çalışır. Prometheus, cAdvisor ve node_exporter sayesinde her konteynerin CPU, bellek ve ağ kullanımını toplar. Grafana’da ise “Service Health Dashboard” adlı bir panel oluşturularak tüm servislerin durumları tek bir ekranda izlenir.
Örneğin, ödeme servisi (payment-service) aniden yanıt süresinde %200 artış gösterdiğinde, Grafana’da bu anormallik otomatik olarak kırmızı bir renk alır ve Alertmanager üzerinden sorumlu mühendise Slack mesajı gönderilir. Bu sayede, sorunun kökeni (örneğin veritabanı bağlantı havuzu tıkanması) hızlıca tespit edilip çözülür. Böyle bir senaryo, sistem kesintilerini %70 oranında azaltarak müşteri memnuniyetini artırır.
Bu örnek, izleme sisteminin sadece veri toplamakla kalmayıp, iş zekası ve otomatik müdahale süreçlerine entegre olmasının ne kadar değerli olduğunu gösterir.
Prometheus ve Grafana’nın Avantaj ve Dezavantajları: Karşılaştırma Tablosu
| Özellik | Prometheus | Grafana |
|---|---|---|
| Temel İşlev | Zaman serisi veri toplama ve sorgulama | Veri görselleştirme ve dashboard oluşturma |
| Veri Toplama Modeli | Pull (HTTP endpoint) | Pull/Push (veri kaynağına bağlı) |
| Ölçeklenebilirlik | Sharding, remote_write | Panel bazlı ölçeklenebilirlik |
| Uyarı Sistemi | Alertmanager entegrasyonu | Grafana Alerting (Alertmanager ile eşzamanlı) |
| Desteklenen Veri Kaynakları | Prometheus formatı, OpenMetrics | Prometheus, InfluxDB, Elasticsearch, MySQL vb. |
| Kurulum Zorluğu | Orta (exporter’lar gerekir) | Kolay (web UI üzerinden) |
| Topluluk ve Dokümantasyon | Geniş, CNCF destekli | Aktif, çok sayıda eklenti |
Tablodan da görüldüğü gibi, Prometheus veri toplama konusunda uzmanlaşmışken, Grafana görselleştirme ve raporlama konusunda öne çıkar. İki araç birlikte kullanıldığında, eksiksiz bir izleme çözümü elde edilir.
Sıkça Sorulan Sorular
Prometheus ve Grafana’yı aynı sunucuda çalıştırabilir miyim?
Evet, düşük trafikli ortamlarda her iki bileşeni aynı VM veya VDS üzerinde çalıştırmak mümkündür. Ancak yüksek veri hacmi ve yoğun sorgulama gerektiren durumlarda, ayrı sunuculara dağıtmak performans ve güvenilirlik açısından daha iyidir.
Prometheus verileri ne kadar süre saklanabilir?
Varsayılan saklama süresi 15 gündür, fakat --storage.tsdb.retention.time parametresiyle bu süre 30 gün, 90 gün veya daha uzun olarak ayarlanabilir. Uzun vadeli saklama için remote_write ile dış depolama çözümleri tercih edilmelidir.
Grafana’da bir paneli dışa aktarmak mümkün mü?
Grafana, panel ve dashboard’ları JSON formatında dışa aktarabilir. “Share → Export → Save to file” seçeneğiyle JSON dosyası oluşturulup başka bir Grafana örneğine import edilebilir.
Alertmanager’da uyarıları nasıl gruplandırabilirim?
Alertmanager konfigürasyon dosyasında group_by ve group_wait ayarlarıyla aynı etikete sahip uyarılar bir arada toplanır. Böylece aynı soruna ait birden fazla uyarı tek bir bildirimde birleştirilir.
Sonuç: Prometheus ve Grafana’yla İzleme Stratejinizi Şimdi Oluşturun
Prometheus ve Grafana, modern altyapıların vazgeçilmez izleme ikilisidir. Doğru kurulum, etkili uyarı tanımları ve performans optimizasyonları sayesinde, sisteminizdeki sorunları önceden tespit edip müdahale süresini dakikalar yerine saniyelere indirebilirsiniz. İlk adım olarak, mevcut veri merkezimiz içinde bir test ortamı oluşturun, temel exporter’ları kurun ve Grafana’da bir demo dashboard hazırlayın. Bu prototip, gerçek üretim ortamına geçmeden önce yapılandırmalarınızı gözden geçirmenize ve gerekli ayarlamaları yapmanıza olanak tanır.
Unutmayın, izleme bir kere kurulan bir sistem değil, sürekli güncellenmesi ve iyileştirilmesi gereken bir süreçtir. Metriklerinizi periyodik olarak gözden geçirin, yeni servisler ekledikçe exporter’ları güncelleyin ve uyarı eşiklerini iş gereksinimlerinize göre ayarlayın. Böylece, altyapınız her zaman sağlıklı, ölçeklenebilir ve güvenilir kalır.