Grafana ile Metrikleri Görselleştirmek
Bu sayfada
Grafana
Grafana, veriyi görselleştirmek için web tabanlı bir arayüz. Çok farklı kaynaktan veri tüketebiliyor ve özellikle Prometheus ile iyi eşleşiyor. Sorgularınızı ince ayar yapmak için Prometheus arayüzünü kullanıp, sonra PromQL'i alıp Grafana'da kullanabilirsiniz.
Bu lab'daki ekran görüntüleri de yazılı adımlar da container'ların çalıştırdığı sürümde, Grafana 13.2.4'te alındı. Menü etiketleri Grafana sürümleri arasında yer değiştirebiliyor — bir şey yine kaymışsa Grafana dökümanları bağlayıcıdır.
Kaynaklar
- Prometheus'u veri kaynağı olarak kullanmak
- Panel'ler — tek tek sorgu
görselleştirmeleri
- Dashboard'lar —
birden fazla paneli birleştirmek
Grafana'yı çalıştırmak
Grafana, Go ile yazılmış çok platformlu bir uygulama. Farklı platformlar için Grafana'yı indirebilirsiniz ama biz Docker container'ında çalıştıracağız:
- grafana.yml — Prometheus ve Grafana container'larını
tanımlıyor
- prometheus.yml — kullanacağımız Prometheus
yapılandırması; çeşitli uygulamalar için veri toplamayı kuruyor ve
tieretiketini ekliyor
Metrik bileşenlerini çalıştırın:
docker compose -f labs/grafana/grafana.yml up -dPrometheus durumunu http://localhost:9090/targets adresinde kontrol edin
Tüm hedeflerin kapalı olduğunu göreceksiniz, ama tier etiketi instance ve
job ile birlikte ayarlanmış durumda. Hedef etiketlerine bu şekilde
altyapıya özgü ayrıntılar ekleyebilirsiniz; bulut servisleri için bölgeyi, ya
da işletim sistemi ve CPU mimarisini dahil edebilirsiniz.
Grafana'yı http://localhost:3000 adresinde açın
Varsayılan kimlik bilgileriyle giriş yapın — yeni parola oluşturmanız istenecek ama bu adımı atlayabilirsiniz:
- kullanıcı:
admin - parola:
admin
Güncel Grafana'da veri kaynağını Connections > Data sources üzerinden eklersiniz:

📋 http://prometheus:9090 URL'siyle bir Prometheus veri kaynağı ekleyip test
edin.
Biraz yardım lazım mı?
Sol menüden Connections > Data sources bölümünü açıp Add new data source tıklayın (ya da doğrudan http://localhost:3000/connections/datasources/new adresine gidin).
- Veri kaynağı tipi olarak Prometheus seçin
- Prometheus server URL alanına
http://prometheus:9090yazın - Diğer tüm alanları olduğu gibi bırakın
Save & test tıklayın ve Data source is working mesajını göreceksiniz.
Kurulum için gereken bu kadar — artık Prometheus'u sorgulayan panellerle bir dashboard oluşturabilirsiniz.
Uptime paneli oluşturmak
Sol menüden Dashboards, sonra New > New dashboard yolunu açın. Şuna benzer boş bir dashboard göreceksiniz:

Her görselleştirme, bir dashboard içindeki bir paneldir.
📋 up metriğini kullanarak Prometheus hedeflerinin ayakta olma durumunu
gösteren yeni bir panel ekleyin.
Biraz yardım lazım mı?
Boş dashboard sizden Select layout seçmenizi ister - Auto grid ya da
Custom grid seçin, sonra Add tıklayıp Panel deyin. (Grafana 13, eski
+ Add visualization düğmesini bu düzen seçiciyle değiştirdi.) Panel
düzenleyici varsayılan veri kaynağınızla açılır; sorgu düzenleyicisine up
yazın. Görselleştirmenin bir ön izlemesini göreceksiniz; tam istediğimiz
gibi değil:

Panel tasarımcısı üç bölümden oluşuyor:
- üstte görselleştirme ön izlemesi
- altta veri; sorgu ve dönüşümler (transform) dahil
- sağda görüntüleme seçenekleri; görselleştirme tipi dahil
Varsayılan, Prometheus'tan gelen bir aralık vektörünü temsil eden _Time series_ görselleştirmesini kullanmak.
Şimdi yolunuzu bulma zamanı 🙂
📋 Panel ayarlarını, Grafana'nın bunu anlık vektör gösteren bir tablo olarak
ele alacağı ve tablo görselleştirmesi kullanacağı şekilde değiştirin. Tabloyu,
yalnızca instance adı ve durum alanları görünecek biçimde kurun; ayakta olan
instance'lar için ok, diğerleri için OFFLINE göstersin.
Hedeflediğiniz şey bu:

Biraz yardım lazım mı?
Query bölümünde:
- Format değerini Table yapın
- Type değerini Instant yapın
Grafana 13'te bunlar sorgu satırındaki Options altında. Instant eskiden bir onay kutusuydu; artık iki Type seçeneğinden biri (Range ya da Instant).
Görüntüleme seçeneklerinde:
- tipi Table olarak değiştirin
Transformations sekmesinde (Query sekmesinin yanında):
- Organize fields by name seçin
- instance ve value dışındaki her şeyi gizleyin
- value adını Status olarak değiştirin
Görüntüleme seçeneklerine dönün:
- Bir başlık ekleyin
- Value mappings bölümüne inip Add value mappings tıklayın (eşleme
eklediğinizde düğme Edit value mappings olur)
- value=0 için
OFFLINEgösteren bir eşleme ekleyin - value=1 için
okgösteren bir eşleme ekleyin - Apply tıklayın
Panelinizi güncelleyip dashboard'a dönmek için sağ üstteki Back tıklayın, sonra saklamak için Save. (Eski Grafana'da bu düğmeler Back to dashboard ve Save dashboard adını taşıyordu.)
Grafana dashboard'ları otomatik yenilenecek şekilde ayarlanabiliyor. 5 saniyede bir yenilemeyi seçin (dashboard'ın sağ üstü); böylece uygulamaları başlattığımızda devreye girdikçe tablonun güncellendiğini göreceksiniz.
Görselleştirme Tipleri
Prometheus'un toplayacak metriği olsun diye uygulamaları başlatın:
- apps.yml — node exporter'ı, döküman API'sini ve üç döküman
işleyiciyi tanımlıyor; işleyicilerden biri sürekli çıkıp yeniden başlayacak şekilde yapılandırılmış.
Uygulamaları çalıştırın:
docker compose -f labs/grafana/apps.yml up -dGrafana'ya geri dönün — instance'lar devreye girdikçe tablonun güncellendiğini göreceksiniz.
Yeterince uzun izlerseniz 1 numaralı işleyici instance'ının ok ve OFFLINE
arasında gidip geldiğini göreceksiniz. Elimizdeki tablo güncel durumu
gösteriyor; her bileşenin uptime geçmişini görmek de faydalı olurdu.
Üst menüden Add tıklayıp ikinci bir panel eklemek için Panel seçin.
Geçen sefer etiketleri gizlemek için bir dönüşüm kullandık, ama bunu sorguda da yapabiliriz:
- sorguyu
sum without(job, tier) (up)yapın - görselleştirme tipini State timeline olarak değiştirin
- 0'ı
OFFLINE, 1'iokgösteren aynı değer eşlemesini ekleyin - zaman aralığını (örneğin) son 15 dakika yapın
Yaklaşıyoruz, biraz toparlamak kaldı.
📋 Sorgu ve görüntüleme seçeneklerini, y ekseninin açıklaması daha faydalı
olacak, x ekseni açıklaması gizlenecek ve OFFLINE kırmızı, ok yeşil çubuk
olarak görünecek şekilde düzenleyin.
Hedef bu:

Biraz yardım lazım mı?
Görüntüleme seçeneklerinde:
- bir panel başlığı ekleyin
- Legend bölümüne inin
- Legend mode değerini Hidden yapın
- Thresholds bölümüne inin
- taban değerin rengini kırmızı yapın
- sonraki eşiği 1 ve rengini yeşil yapın
Sorgu bölümünde:
- legend biçimini
{{instance}}yapın
Back tıklayın.
Böyle daha iyi — dashboard artık tüm instance'lar için güncel ve geçmiş durumu gösteriyor. 1 numaralı işleyicide tekrarlayan bir sorun olduğunu görebiliyoruz; bu, yalnızca tablodan anlaşılmıyordu.
Gerçek Bir Dashboard
Grafana ile çalışmak zahmetli olabiliyor — ama dashboard'ınızı bir kez tasarladığınızda onu herhangi bir Grafana sunucusuna yükleyebilirsiniz.
Lab'da özel bir dashboard ile devam edeceğiz, ama gerçek bir dashboard'ın
nasıl göründüğünü görmeniz için labs/grafana/dashboards/app.json dosyasında
hazır bir tane var:
- sol menüden Dashboards, sonra New > Import yolunu açın
- Upload dashboard JSON file tıklayıp
app.jsondosyasının yolunu bulun - sorulursa Prometheus veri kaynağınızı seçin, sonra Import tıklayın
Bu görselleştirmelerin tamamı, çalıştırdığınız container uygulamalarından gelen metriklerle besleniyor. Sağ üstteki açılır listeden zaman ölçeğini düşürüp son 30 dakikanın metriklerini göstererek Grafana'nın eğilimleri nasıl gösterdiğini görebilirsiniz.
Lab
Uygulamalarınız için farklı seviyelerde bilgi gösteren birkaç dashboard'ınız olacak.
Bu lab'da instance uptime'ında kalacağız, ama göreviniz dashboard'ı uygulamanın her katmanı için bir tane olmak üzere birden fazla satıra (row) bölmek:
- node exporter instance'ını içeren bir altyapı satırı
- döküman API instance'ını içeren bir web satırı
- işleyici instance'larını içeren bir backend satırı
Her satırda o katmandaki instance'lar için bir güncel durum tablosu ve bir zaman çizelgesi olmalı; şuna benzer:

Dashboard'ınızı JSON olarak kaydedin; böylece sonra başka bir Grafana örneğine yükleyebilirsiniz.
Takıldınız mı? İpuçlarına bakın veya çözümü inceleyin.
Temizlik
Bu lab'ın container'larını kaldırın:
docker compose -f labs/grafana/grafana.yml down
docker compose -f labs/grafana/apps.yml downBu komut yalnızca bu lab'in baslattigi container'lari kaldırır. Tamamen temiz bir başlangıç istiyorsanız
docker psile hâlâ çalışan varsa görebilirsiniz.