labs

Bu lab modernize edildi ama ucтan uca dogrulanmadi. Takilirsaniz bize bildirin.

Grafana ile Metrikleri Görselleştirmek

40 dkdockerGitHub'da gor
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

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 tier etiketini ekliyor

Metrik bileşenlerini çalıştırın:

docker compose -f labs/grafana/grafana.yml up -d

Prometheus 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:

Grafana ana ekranı

📋 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:9090 yazı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:

Boş dashboard

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:

up metriğinin varsayılan zaman serisi ön izlemesi


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:

Hedef uptime'ı, ok/OFFLINE değer eşlemeleriyle tablo olarak

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 OFFLINE gösteren bir eşleme ekleyin
    • value=1 için ok gö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 -d

Grafana'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'i ok gö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:

Hedef uptime'ı state timeline olarak; ok için yeşil, OFFLINE için kırmızı

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.json dosyası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:

Altyapı, web ve backend satırlarına bölünmüş uptime dashboard'ı

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 down

Bu komut yalnızca bu lab'in baslattigi container'lari kaldırır. Tamamen temiz bir başlangıç istiyorsanız docker ps ile hâlâ çalışan varsa görebilirsiniz.