Grafana'da amaca hizmet eden bir dashboard nasıl tasarlanır
Grafana'da okunabilir dashboard tasarlamayı öğrenin: RED ve USE yöntemi, değişkenler, panel seçimi, eşik renkleri ve düzen ilkeleri.
İyi dashboard bir soruyu yanıtlar
Grafana'da panel eklemek kolaydır; zor olan, panellerin bir soruya cevap vermesini sağlamaktır. Grafana'nın kendi dokümantasyonu bunu şöyle özetler: dashboard bilişsel yükü azaltmalı, artırmamalı. Bir pano açan kişi birkaç saniye içinde "sistem sağlıklı mı, değilse nerede" sorusunu yanıtlayabilmelidir.
Tasarıma başlamadan önce üç şeyi yazın: kim bakacak (nöbetçi mühendis, ürün sahibi, yönetici), hangi soruyu yanıtlayacak ve hangi kararı destekleyecek. Nöbetçi mühendisin panosu hızlı teşhis içindir; yönetici panosu eğilim ve genel durum içindir. İkisini aynı panoya doldurmak, ikisini de kötü yapar.
Grafana dokümantasyonu panonun bir hikâye anlatmasını önerir: genelden özele doğru ilerleyen bir akış. Üst satırlar genel durumu verir, aşağı indikçe ayrıntı artar. Bu mantıkla pano, hiyerarşik bir keşif aracına dönüşür: üstteki özet panodan ilgili bölümün ayrıntı panosuna geçilir.
Hangi metrikler: RED ve USE
Panolarda ne göstereceğinizi seçmek için iki yöntem yaygındır. USE yöntemi kaynaklar içindir: kullanım (Utilization), doygunluk (Saturation) ve hata (Errors). İşlemci, bellek, disk ve ağ gibi donanım kaynaklarını anlatır ve nedenleri gösterir.
RED yöntemi hizmetler içindir: istek hızı (Rate), hata (Errors) ve süre (Duration). Kullanıcının yaşadığı belirtiyi gösterir. Altın sinyaller ise RED'e doygunluğu ekleyerek gecikme, trafik, hata ve doygunluğu birlikte izler.
Grafana'nın önerisi, uyarıları belirtilere, yani RED panolarına göre kurmaktır: kullanıcı etkilenmedikçe işlemci yüzdesi için gece uyandırmak gereksizdir. Nedenleri bulmak içinse USE panoları teşhis aşamasında kullanılır.
Pratik bir kurgu: bir web hizmeti için üst satırda RED panelleri (istek hızı, hata oranı, gecikme dağılımı), altında hizmeti çalıştıran sunucuların USE panelleri bulunur. Nöbetçi önce belirtiye, sonra nedene iner.
Değişkenler: tek pano, çok ortam
Her sunucu ya da küme için ayrı pano çoğaltmak, bakım yükünü katlar. Grafana'da şablon değişkenleri (template variables) bunun çözümüdür: panonun üstüne ortam, küme, hizmet ya da sunucu seçimi için açılır listeler koyarsınız ve sorgular bu seçime göre çalışır. Veri kaynağını da değişken yaparsanız aynı pano geliştirme, test ve üretim ortamlarında yeniden kullanılır.
Dokümantasyon, bir panoyu önemli değişiklik yapmadan kopyalamamayı ve bunun yerine ana panoyu adres parametreleriyle özelleştirerek bağlantı vermeyi önerir. Değişkenler ayrıca yönlendirmeli gezinmeyi destekler: kullanıcı doğru panoyu tahmin etmek yerine tek listeden seçim yapar.
Değişken kullanırken dikkat edilecekler: değişken adları anlaşılır olmalı, varsayılan değer yaygın durumu göstermeli ve çok değer seçilebilen değişkenlerde grafik çizgisi sayısı kontrol altında tutulmalı. Yüzlerce çizgi çizen bir panel okunamaz.
Panel türünü doğru seçmek
Her panel türü farklı bir soruya iyi cevap verir:
- Zaman serisi: eğilimi, ani sıçramayı ve değişimi göstermek için. En yaygın panel türüdür.
- Stat: tek bir güncel değeri vurgulamak için. Hata oranı ya da kullanılabilirlik gibi, bakılan tek sayı.
- Gauge ve çubuk gösterge: bir değerin sınıra ne kadar yakın olduğunu göstermek için.
- Tablo: ayrıntı ve sıralama gerektiğinde, örneğin en yavaş uç noktalar.
- Isı haritası (heatmap): dağılımı, özellikle gecikme dağılımını zaman içinde görmek için. Ortalama gecikmenin gizlediğini açığa çıkarır.
- Günlük (logs) paneli: metriğin yanında ilgili log satırlarını göstermek için.
- Metin paneli: panonun amacını, kullanım talimatını ve ilgili bağlantıları belgelemek için.
Dokümantasyonun uyarıları: yığılmış grafiklerden çoğu zaman kaçının, çünkü yanıltabilirler. Büyüklükleri çok farklı metrikleri aynı grafiğe koymayın; toplamlar önemli verileri gizler. Birimleri farklı seriler için sol ve sağ Y eksenini kullanın. Mümkün olduğunda metrikleri normalleştirin, örneğin işlemciyi çekirdek yüzdesi olarak gösterin.
Renk, eşik ve düzen
Renk yalnızca süs değil bilgidir. Eşikleri tanımlayıp renkleri anlamlı kullanın: sağlıklı değerler için mavi ya da yeşil tonları, kritik için kırmızı gibi ve tüm panoda aynı anlamda. Aynı rengin bir panelde iyi, diğerinde kötü anlam taşıması okuyucuyu yanıltır. Eşik değerlerini keyfî değil, hizmet seviyesi hedefleri ve geçmiş ölçümlerden türetin.
Düzen için pratik ilkeler:
- Hizmet satırlarını veri akış sırasıyla dizin; RED metrikleri her satırda aynı konumda dursun.
- En önemli paneller sayfanın üstünde ve görünür alanda olsun.
- Yalnızca soruyu yanıtlamak için gereken veriyi gösterin. Örneğin yalnızca sorunlu sunucuları listelemek, bütün filoyu göstermekten iyidir.
- Gereksiz sık yenileme aralığından kaçının; arka uca yük bindirir.
- Panelin başlığına ve açıklamasına ne gösterdiğini ve birimini yazın. Açıklama alanı, panonun kendi kendini belgelemesini sağlar.
Örnek senaryo: ödeme hizmetini izleyen bir panonun en üstünde son durumu söyleyen stat paneller (hata oranı, kullanılabilirlik), altında istek hızı ve gecikme dağılımı, en altta ayrıntıya inmek için sunucu kaynak panelleri ve ilgili log paneli bulunur.
Yönetim: adlandırma, sürümleme, bakım
Pano sayısı arttıkça başıboşluk (sprawl) doğar. Grafana'nın önerdiği disiplin şudur:
- Anlamlı adlar verin; geçici panoları TEST ya da TMP ile başlatıp işiniz bitince silin.
- Panonun sahibini ad ya da etiketle belirtin. Sahipsiz pano çürür.
- Panoların JSON tanımını sürüm denetiminde tutun. Böylece değişiklik izlenir ve geri alınır.
- Tutarlılık gereken yerde panoları grafonnet ya da grafanalib gibi betik kütüphaneleriyle üretin.
- Değişiklikleri üretimden önce ayrı bir Grafana kopyasında deneyin.
- İlgili panolar arasında bağlantı, pano listesi paneli ya da metin paneli kullanın.
- Bir panoyu kopyalarken adını açıkça değiştirin ve etiketlerini kopyalamayın; etiketler aramayı yönlendirir ve kopyalar yanlış eşleşme üretir.
- Düzenli aralıklarla panoları gözden geçirip kullanılmayanları kaldırın.
Bu yönetim işi görünmez ama kritiktir: kimsenin güvenmediği ya da bulamadığı bir pano, olay anında işe yaramaz.
Bu beceriyi Mindset programlarında çalışmak
Mindset kataloğundaki Prometheus ve Grafana ile İzleme eğitimi, PromQL sorgulamadan sonra Grafana dashboard tasarımını ve Alertmanager ile alarm yönetimini ayrı modüller olarak işler. Grafana Loki ile Log Toplama ve Sorgulama eğitimi ise panel ve korelasyon konusunu loglarla birleştirir.
Sistem, SRE, DevOps ve altyapı ekipleri için uygundur; kurumsal ekiplerde ortak bir pano standardı (adlandırma, eşik, değişken kullanımı) belirlemek isteyenler için çerçeve sunar.
İlgili Mindset programı
Prometheus ve Grafana ile İzleme
Sık sorulan sorular
RED ile USE yöntemi arasında nasıl seçim yaparım?
RED hizmetin kullanıcıya yansıyan belirtilerini (istek hızı, hata, süre) gösterir ve uyarı kurmak için uygundur. USE ise altyapı kaynaklarının (kullanım, doygunluk, hata) nedenlerini gösterir ve teşhis içindir. İkisi birbirini tamamlar: belirtiyi RED panosunda yakalar, nedene USE panosuyla inersiniz.
Her sunucu için ayrı pano mu yapmalıyım?
Hayır. Şablon değişkenleriyle tek bir pano farklı sunucu, küme ve ortamlar için kullanılabilir. Değişkenler panonun üstünde seçim listesi sunar ve sorgular seçime göre çalışır. Veri kaynağını da değişken yaparsanız aynı pano geliştirme ve üretim ortamında yeniden kullanılabilir.
Pano çok kalabalık oldu, nasıl sadeleştiririm?
Önce panonun yanıtlaması gereken soruyu yeniden yazın ve bu soruya hizmet etmeyen panelleri kaldırın ya da ayrı bir ayrıntı panosuna taşıyın. Büyüklükleri çok farklı metrikleri ayırın, yığılmış grafikleri ve çok seri çizen panelleri azaltın. Üstte özet, altta ayrıntı mantığıyla hiyerarşik pano kurun.
Dashboard JSON'unu neden sürüm denetiminde tutmalıyım?
Pano tanımını depoda tutmak değişiklikleri izlemenizi, gözden geçirmenizi ve gerektiğinde geri almanızı sağlar. Ayrıca panoları kodla üretip aynı tanımı farklı ortamlara dağıtmak tutarlılık getirir. Arayüzden yapılan el değişiklikleri izlenmezse hangi panonun neden değiştiği zamanla kaybolur.
Renkleri nasıl kullanmalıyım?
Renk bir anlam taşımalı ve tüm panolarda tutarlı olmalıdır. Eşik tanımlayın, sağlıklı değerleri mavi veya yeşil, kritik değerleri kırmızı gibi tek anlamlı renklerle gösterin. Eşikleri hizmet seviyesi hedeflerine ve geçmiş ölçümlere dayandırın. Süs için renk kullanmak okuyucuyu yanıltır ve dikkati dağıtır.