Prometheus ve Grafana kurulumu: metrikten panoya, alarma
Prometheus ve Grafana ile izleme altyapısını adım adım kurun: mimari, exporter, PromQL sorguları, panolar ve alarm yönetimiyle ilk izleme düzeniniz.
Prometheus ve Grafana ne işe yarar?
Prometheus, sistemlerden ve uygulamalardan sayısal ölçümleri (metrikleri) düzenli aralıklarla toplayıp zaman serisi olarak saklayan bir izleme ve uyarı aracıdır. Grafana ise bu verileri okuyup grafiklere, panolara (dashboard) ve görsel uyarılara dönüştüren görselleştirme katmanıdır. Birlikte kullanıldıklarında şu soruların cevabı hızla bulunur: sunucunun işlemcisi ne zamandan beri zorlanıyor, hangi servisin hata oranı artıyor, yanıt süresi dağılımı normal mi?
Prometheus verileri çekme (pull) modeliyle toplar: sunucu, izlenen hedeflerin HTTP üzerinden sunduğu metrik uç noktalarına belirli aralıklarla gider ve değerleri okur. Bu tercih, hangi hedeflerin izlendiğini merkezden yönetmeyi ve bir hedef yanıt vermediğinde bunu doğrudan bir sinyal olarak görmeyi kolaylaştırır. Kısa ömürlü işler için ise Pushgateway adlı ara bileşen kullanılır; iş bitmeden hedef yok olacağından değerler bu aracıya bırakılır.
Gözlemlenebilirlik açısından metrikler yalnızca bir ayaktır. Günlükler (loglar) ve iz kayıtları (trace) farklı soruları yanıtlar. Metrikler hızlı genel bakış ve alarm için, loglar ayrıntılı kök neden için uygundur; Prometheus ve Grafana ikilisi bu yapının metrik kısmını kurar.
Mimariyi anlamak: bileşenler ve veri akışı
Kurulumdan önce bileşenlerin rollerini ayırmak gerekir: • Prometheus sunucusu: Hedefleri tarar, değerleri saklar ve kurallar üzerinden yeni seriler ya da uyarılar üretir. • Exporter'lar: Doğrudan metrik sunmayan sistemler için çeviri katmanıdır. Linux sunucular için node exporter, veritabanları ve kuyruk sistemleri için kendi exporter'ları bulunur. • Servis keşfi: Hedefler sabit bir listeyle ya da bulut ve konteyner ortamlarında dinamik olarak bulunabilir. Ortam sık değişiyorsa statik liste bakım yükü oluşturur. • Alertmanager: Prometheus'un ürettiği uyarıları gruplar, tekrarları bastırır ve doğru kanala (e-posta, mesajlaşma, nöbet sistemi) yönlendirir. • Grafana: Prometheus'u veri kaynağı olarak tanımlar ve sorguları panolara çevirir.
Akış kabaca şöyledir: hedef metrik sunar, Prometheus toplar, kural değerlendirilir, koşul oluşursa Alertmanager devreye girer; insanlar Grafana panosundan durumu izler. Bu zinciri kâğıt üstünde çizmek, yapılandırma dosyalarına geçmeden önce zihinde yapıyı oturtmanın en pratik yoludur.
Kurulum ve ilk izleme: adım adım
İlk çalışan kurulum küçük tutulmalıdır. Sıra şöyle önerilir: • Prometheus'u bir sanal makinede ya da konteynerde ayağa kaldırın ve yapılandırma dosyasında kendi kendini hedef olarak tanımlayın. Böylece toplama döngüsünün çalıştığını hemen görürsünüz. • Bir Linux sunucuya node exporter kurup bunu yapılandırmaya ayrı bir iş (job) olarak ekleyin. İşlemci, bellek, disk ve ağ metrikleri akmaya başlar. • Grafana'yı kurun, Prometheus'u veri kaynağı olarak bağlayın ve topluluğun hazırladığı hazır bir sunucu panosunu içe aktarın. Hazır pano, panel yapısını ve sorgu mantığını öğrenmek için iyi bir başlangıçtır. • Prometheus arayüzünde bir sorgu yazıp sonucunu Grafana'da grafiğe dökün. Böylece katmanlar arasındaki ilişkiyi görürsünüz. • Hedeflerin ayakta olup olmadığını gösteren basit bir alarm kuralı yazın ve Alertmanager üzerinden test bildirimi alın.
Her adımdan sonra çalıştığını doğrulayın. Hedefler sayfasında hedefin sağlıklı görünmemesi çoğunlukla ağ erişimi, güvenlik duvarı kuralı ya da yanlış yazılmış adres kaynaklıdır.
PromQL ile sorgu yazmak
PromQL, Prometheus'un sorgu dilidir. Mantığını kavramak, Grafana panolarının da büyük kısmını anlamak demektir. Temel kavramlar şunlardır: metrik adı, etiketler ve zaman aralığı. Etiketler (örneğin hangi sunucu, hangi servis, hangi durum kodu) sorguyu filtrelemeyi ve gruplamayı sağlar.
Metrik türlerini ayırmak sorgu doğruluğunu belirler: • Sayaç (counter): Yalnız artan değer, örneğin toplam istek sayısı. Anlamlı hale gelmesi için çoğunlukla zaman içindeki artış hızına çevrilir; bunun için rate gibi fonksiyonlar kullanılır. • Gösterge (gauge): Artıp azalabilen anlık değer, örneğin boş bellek ya da kuyruktaki iş sayısı. Doğrudan okunur. • Histogram ve özet (summary): Yanıt süresi gibi dağılımları ölçer; yüzdelik dilimlerle yorumlanır.
Örnek senaryo: bir web servisinin hata oranını izlemek istiyorsunuz. Hatalı istekleri sayan sayaç ile toplam istek sayacını ayrı ayrı hız fonksiyonundan geçirir, birini diğerine bölersiniz; sonuç hata oranı olur. Sorguyu önce Prometheus arayüzünde deneyin, sonra panele taşıyın. En sık yapılan hata, sayacı doğrudan çizdirmektir: çizgi hep yukarı gider ve hiçbir şey anlatmaz.
Grafana panosu tasarlamak
İyi bir pano, bakan kişiye saniyeler içinde "her şey yolunda mı, değilse nerede?" sorusunu yanıtlar. Bunun için panoyu soruya göre düzenleyin: • Üst kısma genel durum göstergelerini koyun: hedeflerin ayakta olma durumu, hata oranı, yanıt süresi. • Altına ayrıntı panelleri ekleyin: kaynak kullanımı, kuyruk uzunlukları, servis bazlı dağılımlar. • Panel başlıklarına birim ve ne ölçtüğünü yazın; yalnız metrik adı yazmak yeni gelen birini yabancılaştırır. • Değişkenler (variables) tanımlayarak aynı panoyu birçok sunucu ya da servis için yeniden kullanın.
Sık yapılan hata, her mevcut metriği panoya doldurmaktır. Kalabalık pano, kimsenin bakmadığı pano demektir. Her panelin bir karar ya da eyleme bağlanması gerekir: bu grafik yükselirse ne yapacağım? Cevabı yoksa paneli kaldırın. Grafana'nın kendi uyarı özellikleri de vardır; ancak uyarı kuralları Prometheus tarafında tutulduğunda yapı sürümlenebilir ve Alertmanager'ın gruplama imkânlarından yararlanılır.
Alarm yönetimi ve yaygın hatalar
Alarmların amacı insanı uyandırmak değil, doğru durumda doğru kişiyi bilgilendirmektir. Eşiği aşan her şey için alarm kurmak, kısa sürede gürültüye dönüşür ve gerçek sorunlar kaçırılır. Pratikte şu ilkeler işe yarar: • Belirti odaklı alarm yazın: işlemci yüksek diye değil, kullanıcıyı etkileyen hata oranı yükseldiği için uyarın. • Kısa dalgalanmaları elemek için koşulun belirli bir süre sürmesini şart koşun. • Uyarılara ciddiyet seviyesi etiketi verin ve Alertmanager yönlendirmesini buna göre yapın; her uyarı nöbetçiyi arama gerektirmez. • Her alarma, ne anlama geldiğini ve ilk bakılacak yeri anlatan kısa bir açıklama ekleyin.
Başka tuzaklar da vardır: yüksek kardinalite (çok sayıda benzersiz etiket değeri) saklama alanını ve sorgu hızını bozar; kullanıcı kimliği gibi sınırsız değerleri etiket yapmaktan kaçının. Veri saklama süresini ve disk alanını baştan planlayın. Tek bir Prometheus örneğinin erişilemez olması tüm izlemeyi kör eder; kritik ortamlarda yedekli kurulum ve uzun süreli depolama düşünülmelidir.
Öğrenme yolu ve Mindset bağlamı
Başlangıç düzeyinde hedef, tek sunucuyu izleyip pano ve basit alarm kurmaktır. Sonraki aşamada servis keşfi, kendi uygulamanıza özel metrik üretimi ve PromQL'de toplama işlemleri gelir. İleri düzeyde ise kural yönetimi, yedeklilik, uzun süreli depolama ve izleme yapılandırmasının kod olarak sürümlenmesi öğrenilir.
Mindset kataloğundaki Prometheus ve Grafana ile İzleme eğitiminin modülleri bu sırayı izler: gözlemlenebilirlik temelleri, Prometheus mimarisi ve kurulum, PromQL sorgulama dili, ihracat ve entegrasyon, Grafana dashboard tasarımı, Alertmanager ve alarm yönetimi ile ileri düzey gözlemlenebilirlik yığını. Konuyu bir bütün olarak, mimariden alarma kadar yapılandırılmış biçimde öğrenmek isteyenler için bu program bir çerçeve sunar.
İlgili Mindset programı
Prometheus ve Grafana ile İzleme
Sık sorulan sorular
Prometheus ile Grafana arasındaki fark nedir?
Prometheus metrikleri toplar, saklar ve sorgulanabilir hale getirir; alarm kurallarını da burada tanımlarsınız. Grafana ise veriyi görselleştirir. Grafana kendi başına veri toplamaz, Prometheus gibi bir veri kaynağına bağlanır. İkisi birbirini tamamlar ama ayrı yazılımlardır.
Prometheus yalnızca sunucu izlemek için mi kullanılır?
Hayır. Sunucu kaynaklarının yanında uygulama metriklerini, konteyner ve orkestrasyon platformlarını, veritabanlarını ve kuyruk sistemlerini de izleyebilir. Uygulamanızın kendi iş metriklerini, örneğin sipariş sayısı ya da işlem süresini, kütüphaneler aracılığıyla Prometheus'a açmanız mümkündür.
Hazır panolar yeterli olur mu?
Başlangıç için çok iyidir, çünkü kurulumun çalıştığını hızla gösterir ve panel mantığını öğretir. Ancak kurumunuzun gerçek sorularına cevap vermez. Zamanla kendi servislerinize ve karar akışınıza uygun, gereksiz panelleri ayıklanmış özel panolar oluşturmak gerekir.
PromQL öğrenmek zor mu?
Temel kavramlar kısa sürede oturur: metrik, etiket, zaman aralığı ve hız fonksiyonu. Zorluk, sayaç ve gösterge türlerini doğru ayırmak ile toplama işlemlerinde etiketleri doğru kullanmakta çıkar. Gerçek bir sistemden gelen veriyle pratik yapmak öğrenmeyi en çok hızlandıran yoldur.
Alarm yorgunluğu nasıl önlenir?
Alarmları sistem durumuna değil kullanıcı etkisine bağlayın, kısa dalgalanmaları süre koşuluyla eleyin ve her alarmın bir eylemi olduğundan emin olun. Eylemi olmayan alarmları silin ya da bilgi düzeyine indirin. Düzenli aralıklarla hangi alarmların gerçekten işe yaradığını gözden geçirmek de gürültüyü azaltır.