CodeBlanks Logo Icon CodeBlanks

Merkezi logging

Merkezi günlük toplama kavramını öğrenirsin.

Merkezi logging

kubectl logs tek bir pod için yeterlidir, ama yüzlerce pod'da, silinen pod'larda ve günler öncesine ait olaylarda işe yaramaz. Merkezi loglama tüm container log'larını bir yerde toplar, saklar ve aranabilir yapar. Tipik hat üç parçadır:

  • Toplayıcı (her node'da DaemonSet): Fluent Bit, Fluentd, Promtail, Vector
  • Depo ve arama: Elasticsearch/OpenSearch ya da Grafana Loki
  • Arayüz: Kibana/OpenSearch Dashboards ya da Grafana
node: /var/log/containers/*.log  ─►  Fluent Bit (DaemonSet)  ─►  Elasticsearch  ─►  Kibana

Yapılandırılmış log

Uygulamalar log'larını stdout'a ve tercihen JSON biçiminde yazmalıdır. Böylece toplayıcı alanları (seviye, istek kimliği, kullanıcı) ayrıştırır ve sorgularda süzülebilir:

# düz metin: aranması zor
2026-11-03 10:12:01 ERROR sepet kaydedilemedi kullanici=42
# JSON: alanlar ayrık
{"zaman":"2026-11-03T10:12:01Z","seviye":"error","mesaj":"sepet kaydedilemedi","kullanici":42,"istek_id":"a1b2c3"}

Her isteğe bir kimlik verip tüm servislerin log'una yazmak, bir isteği servisler arasında izlemeyi sağlar.

Uygulama Log kaynağına bak

İki komut yaz: busybox:1.36 image'lı, worker-1 node'unu hedefleyen etkileşimli bir hata ayıklama oturumu aç (kubectl debug node/worker-1 -it --image=busybox:1.36); ardından app=api etiketli pod'ların son 3 log satırını önekleriyle göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl debug node/worker-1 -it --image=busybox:1.36
kubectl logs -l app=api --tail=3 --prefix

Beklenen çıktı

Creating debugging pod node-debugger-worker-1-x7k2p with container debugger on node worker-1.
/ # ls /host/var/log/containers | head -2
api-7f8c9d6b5-abcde_magaza_api-3f2a….log
[pod/api-7f8c9d6b5-abcde/api] {"seviye":"info","mesaj":"istek","yol":"/urunler","sure_ms":12}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Toplayıcı neden DaemonSet olarak çalışır?

  • Daha az bellek için
  • Elasticsearch gerektirdiği için
  • Tek kopya yeterli olduğu için
  • Her node'un container log dosyalarını o node'da okumak için Doğru cevap

Açıklama: kubelet log'ları node diskinde tutar.

2 Container log dosyalarının yolunu tamamla.

Soru
node: /var/log/____/*.log
Cevap
node: /var/log/containers/*.log

Açıklama: kubelet her container için buraya bir bağlantı koyar.

3 Eşleştir.

Kavram Anlamı
Fluent Bit Toplayıcı
Elasticsearch Depo ve arama
Kibana Arayüz
JSON log Ayrıştırılabilir alanlar

İleri seviye bölümündeki tüm dersler