TOBS, The Observability Stack, ile Kubernetes İzleme Kurulumu
Kubernetes, modern uygulama geliştirmenin ve dağıtımının temel taşı haline gelmiş, konteynerli iş yüklerini yönetmek için güçlü ve esnek bir platformdur. Ancak bu gücün ve esnekliğin getirdiği karmaşıklık, Kubernetes kümelerinin ve üzerinde çalışan uygulamaların etkin bir şekilde izlenmesini zorunlu kılar. Geleneksel izleme yöntemleri, dinamik ve dağıtık yapıdaki Kubernetes ortamlarının sürekli değişen doğasına ayak uydurmakta yetersiz kalabilir. İşte tam da bu noktada “Observability” (Gözlemlenebilirlik) kavramı devreye girer. Gözlemlenebilirlik, bir sistemin iç durumunu, dışarıdan gözlemlenebilen veriler (metrikler, loglar ve trace’ler) aracılığıyla anlamamızı sağlayan bir yetenektir. Bu makalede, Kubernetes kümeleriniz için kapsamlı bir gözlemlenebilirlik çözümü sunan TOBS (The Observability Stack) kurulumunu ve kullanımını detaylı bir şekilde inceleyeceğiz.
Kubernetes ve Gözlemlenebilirliğin Önemi
Kubernetes, mikroservis mimarileri için ideal bir platform sunar. Uygulamalar küçük, bağımsız servisler halinde dağıtılır ve dinamik olarak ölçeklenir. Bu dinamizm, izleme ve hata ayıklama süreçlerini karmaşıklaştırır. Bir uygulamanın performansı düşerse veya bir hata meydana gelirse, sorunun hangi servisten, hangi pod’dan veya hangi düğümden kaynaklandığını hızlıca tespit etmek kritik önem taşır. Geleneksel izleme araçları genellikle statik altyapılar için tasarlanmıştır ve Kubernetes’in pod’ların, servislerin ve ağ politikalarının sürekli değiştiği yapısına uyum sağlamakta zorlanır.
Gözlemlenebilirlik, sadece sistemin çalışıp çalışmadığını değil, neden çalıştığını veya neden çalışmadığını anlamamızı sağlar. Üç temel sütunu vardır:
* Metrikler (Metrics): Sayısal verilerdir ve zaman serileri halinde toplanır. CPU kullanımı, bellek tüketimi, ağ trafiği, istek gecikme süreleri gibi performans göstergelerini içerir. Metrikler, sistemin genel durumu hakkında hızlı bir bakış sunar.
* Loglar (Logs): Uygulamalar ve sistem bileşenleri tarafından üretilen olay kayıtlarıdır. Hata mesajları, uyarılar, bilgi notları gibi yapılandırılmış veya yapılandırılmamış metin verileridir. Loglar, belirli bir olayın veya hatanın detaylarını anlamak için kullanılır.
* Trace’ler (Traces): Dağıtık bir sistemde bir isteğin yaşam döngüsünü, farklı servisler arasındaki etkileşimleri ve bu etkileşimlerin sürelerini gösteren verilerdir. Trace’ler, mikroservis mimarilerinde performans darboğazlarını ve hataları tespit etmek için özellikle faydalıdır.
TOBS, bu üç sütundan metrikler ve loglar üzerine odaklanarak Kubernetes için güçlü bir gözlemlenebilirlik temeli oluşturur.
TOBS: The Observability Stack Nedir?
TOBS, Kubernetes ortamları için özel olarak tasarlanmış, açık kaynaklı ve entegre bir gözlemlenebilirlik yığınıdır. Genellikle aşağıdaki temel bileşenleri içerir:
* Prometheus: Metrik toplama ve depolama motoru. Kubernetes’in dinamik yapısına uygun servis keşfi yetenekleri ile öne çıkar.
* Grafana: Metrikleri ve logları görselleştirmek için kullanılan güçlü bir gösterge paneli (dashboard) aracı.
* Loki: Prometheus’tan ilham alan, log toplama ve indeksleme sistemi. Logları etiket tabanlı olarak saklar ve sorgular.
* Alertmanager: Prometheus’tan gelen uyarıları işleyen, gruplandıran, deduplicate eden ve çeşitli kanallara (Slack, e-posta vb.) gönderen bir uyarı yönetim aracı.
* kube-state-metrics: Kubernetes API’sından metrikler toplayan bir servis. Pod durumu, dağıtım durumu, düğüm durumu gibi Kubernetes objelerinin durumunu izler.
* node-exporter: Sunucu düzeyindeki işletim sistemi metriklerini (CPU, bellek, disk, ağ) toplayan bir ajan.
* Promtail: Loki için log toplama ajanı. Pod’lardan ve düğümlerden logları toplar ve Loki’ye gönderir.
Bu bileşenler, bir araya gelerek Kubernetes kümenizin ve üzerinde çalışan uygulamaların her katmanından kapsamlı görünürlük sağlar.
Neden Kubernetes için TOBS?
TOBS’un Kubernetes için tercih edilmesinin birçok nedeni vardır:
* Açık Kaynak ve Topluluk Desteği: Tüm bileşenler açık kaynaklıdır, bu da esneklik, şeffaflık ve geniş bir topluluk desteği anlamına gelir.
* Kubernetes Yerel Entegrasyon: Prometheus’un servis keşfi mekanizmaları, ServiceMonitor ve PodMonitor gibi CRD’ler (Custom Resource Definitions) sayesinde Kubernetes kaynaklarını otomatik olarak keşfedebilir ve metriklerini toplayabilir.
* Kapsamlı Gözlemlenebilirlik: Metrikler, loglar ve uyarılar için tek bir entegre çözüm sunar. Bu, farklı araçlar arasında geçiş yapma ihtiyacını azaltır.
* Ölçeklenebilirlik: Bileşenler, büyük ölçekli Kubernetes kümelerinde bile performans gösterecek şekilde tasarlanmıştır. Uzun vadeli depolama için Thanos, Mimir veya Cortex gibi çözümlerle entegre edilebilir.
* Esneklik ve Özelleştirilebilirlik: Grafana’nın zengin gösterge paneli yetenekleri ve PromQL/LogQL gibi güçlü sorgu dilleri sayesinde, ihtiyaçlarınıza özel izleme ve analiz çözümleri oluşturabilirsiniz.
* Maliyet Etkinliği: Açık kaynaklı olması, lisans maliyetlerinden tasarruf sağlar. Bulut ortamlarında altyapı maliyetleri optimize edilebilir.
TOBS Bileşenlerine Derinlemesine Bakış
TOBS’u oluşturan temel bileşenleri daha yakından inceleyelim.
Prometheus: Metriklerin Kalbi
Prometheus, CNCF (Cloud Native Computing Foundation) tarafından inkübe edilen ve mezun olan ilk projelerden biridir. Temel özellikleri şunlardır:
* Çekme Modeli (Pull Model): Hedeflerden metrikleri HTTP üzerinden çeker. Bu, özellikle servis keşfi ile birleştiğinde Kubernetes gibi dinamik ortamlarda çok etkilidir.
* Çok Boyutlu Veri Modeli: Metrikler, anahtar-değer çiftleri (etiketler) ile etiketlenir. Bu etiketler, metrikleri filtrelemek ve gruplandırmak için kullanılır. Örneğin, http_requests_total{method="GET", status="200", instance="web-01"}.
* PromQL (Prometheus Query Language): Güçlü ve esnek bir sorgu dilidir. Metrikleri zaman serileri üzerinde toplamak, filtrelemek, birleştirmek ve matematiksel işlemler yapmak için kullanılır.
* Servis Keşfi: Kubernetes API’si ile entegre olarak, yeni pod’ları, servisleri ve endpoint’leri otomatik olarak keşfeder ve izlemeye başlar.
* Yerel Depolama: Metrikleri yerel diskte zaman serisi veritabanı olarak depolar. Genellikle kısa vadeli depolama (birkaç hafta) için kullanılır.
Prometheus, Kubernetes kümenizin ve uygulamalarınızın performansını ve sağlığını sürekli olarak izlemek için temel veri kaynağını sağlar.
Grafana: Görselleştirme ve Gösterge Panelleri
Grafana, metrikleri, logları ve diğer zaman serisi verilerini görselleştirmek için kullanılan popüler bir araçtır.
* Çoklu Veri Kaynağı Desteği: Prometheus, Loki, Elasticsearch, InfluxDB gibi birçok farklı veri kaynağına bağlanabilir.
* Esnek Gösterge Panelleri: Çeşitli panel tipleri (grafikler, tablolar, tek değer göstergeleri, ısı haritaları) ile özelleştirilebilir gösterge panelleri oluşturma imkanı sunar.
* Şablonlama (Templating): Dinamik gösterge panelleri oluşturmak için değişkenler kullanır. Örneğin, tek bir gösterge paneli ile farklı Kubernetes namespace’lerini veya pod’larını izleyebilirsiniz.
* Uyarı Entegrasyonu: Grafana’nın kendisi de uyarı kuralları tanımlayabilir ve Alertmanager’a veya doğrudan bildirim kanallarına gönderebilir.
* Kullanıcı ve Rol Yönetimi: Ekiplerinize özel erişim izinleri ve gösterge paneli paylaşımları yapmanızı sağlar.
Grafana, TOBS’ta Prometheus ve Loki’den gelen ham verileri anlamlı görselleştirmelere dönüştürerek sistem durumunu kolayca kavramanıza yardımcı olur.
Loki: Log Yönetimi Basitleştirildi
Loki, Prometheus’tan esinlenerek tasarlanmış, log toplama ve indeksleme sistemidir. Geleneksel log yönetim sistemlerinden farklı bir yaklaşıma sahiptir:
* Etiket Tabanlı İndeksleme: Logların içeriğini indekslemek yerine, Prometheus’a benzer şekilde logları etiketler (metadata) üzerinden indeksler. Bu, daha düşük maliyetli ve daha hızlı bir indeksleme sağlar.
* Promtail Ajanı: Kubernetes düğümlerinde çalışan Promtail, log dosyalarını toplar, etiketler ekler ve Loki’ye gönderir. kubernetes_sd_config kullanarak pod’ların ve konteynerlerin metadata’sını otomatik olarak etiket olarak ekleyebilir.
* LogQL (Loki Query Language): PromQL’e benzer bir sözdizimine sahip, logları sorgulamak için kullanılan bir dildir. Etiketlere göre filtreleme, metin aramaları ve log satırları üzerinde çeşitli işlemler yapabilir.
* Sıkıştırma ve Nesne Depolama: Logları sıkıştırarak ve S3 gibi nesne depolama hizmetlerinde saklayarak maliyetleri optimize eder.
Loki, Kubernetes ortamındaki log karmaşasını yönetmek ve hızlıca anlamlı bilgilere ulaşmak için hafif ve etkili bir çözüm sunar.
Alertmanager: Akıllı Uyarı Yönetimi
Alertmanager, Prometheus tarafından tetiklenen uyarıları işler.
* Uyarı Gruplama: Benzer uyarıları tek bir bildirim altında toplar, böylece aynı anda birçok uyarı tetiklendiğinde bildirim selini önler.
* Deduplication: Aynı uyarıların tekrar tekrar gönderilmesini engeller.
* Yönlendirme (Routing): Uyarıları önceliklerine veya etiketlerine göre farklı alıcılara (ekiplere, kanallara) yönlendirir.
* Susturma (Silencing): Bakım pencereleri veya bilinen sorunlar sırasında uyarıları geçici olarak susturma imkanı sunar.
* Çoklu Bildirim Kanalları: Slack, e-posta, PagerDuty, VictorOps gibi birçok bildirim kanalını destekler.
Alertmanager, kritik sorunlar hakkında doğru kişilerin, doğru zamanda bilgilendirilmesini sağlayarak operasyonel verimliliği artırır.
TOBS’u Kubernetes’e Kurulumu
TOBS’u Kubernetes kümenize kurmanın en kolay ve önerilen yolu Helm kullanmaktır. Helm, Kubernetes uygulamalarını paketlemek ve dağıtmak için bir paket yöneticisidir.
Ön Koşullar
Kuruluma başlamadan önce aşağıdaki ön koşulların karşılandığından emin olun:
* Çalışır Durumda Bir Kubernetes Kümesi: Minikube, Kind, k3s veya herhangi bir bulut sağlayıcısının (AWS EKS, Azure AKS, GCP GKE) yönetilen Kubernetes hizmeti olabilir.
* kubectl: Kubernetes kümenizle etkileşim kurmak için kubectl komut satırı aracı kurulu ve yapılandırılmış olmalıdır.
* Helm: Helm v3 veya üzeri kurulu olmalıdır.
Helm ile Kurulum
TOBS’u genellikle iki ana Helm grafiği ile kurarız: kube-prometheus-stack ve loki-stack.
1. Helm Repolarını Ekleme
İlk olarak, ilgili Helm repolarını eklememiz gerekir:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo add loki https://grafana.github.io/helm-charts
helm repo update
2. kube-prometheus-stack Kurulumu
kube-prometheus-stack grafiği, Prometheus, Grafana, Alertmanager, kube-state-metrics ve node-exporter gibi birçok bileşeni tek bir pakette kurar.
Varsayılan yapılandırma genellikle çoğu senaryo için yeterlidir, ancak kaynak kısıtlamaları, depolama ayarları veya servis türleri gibi belirli özelleştirmeler için bir values.yaml dosyası oluşturmak iyi bir uygulamadır.
Örnek values.yaml (minimal özelleştirmelerle):
# prometheus-values.yaml
alertmanager:
ingress:
enabled: true
hosts:
- alertmanager.your-domain.com # Kendi domaininizi kullanın
alertmanagerSpec:
retention: 120h # Uyarı geçmişi saklama süresi
grafana:
ingress:
enabled: true
hosts:
- grafana.your-domain.com # Kendi domaininizi kullanın
annotations:
kubernetes.io/ingress.class: nginx # Kullanılan ingress controller tipine göre değişebilir
adminPassword: "your-strong-password" # Güçlü bir şifre belirleyin
persistence:
enabled: true
storageClassName: standard # Kullanılan depolama sınıfına göre değişir
size: 10Gi
prometheus:
prometheusSpec:
retention: 15d # Metrik saklama süresi
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: standard # Kullanılan depolama sınıfına göre değişir
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 50Gi
Bu values.yaml dosyasını kullanarak kurulumu yapalım:
kubectl create namespace monitoring # Eğer yoksa monitoring namespace'ini oluşturun
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
-f prometheus-values.yaml
Kurulumun tamamlanmasını bekleyin. Pod’ların ve servislerin monitoring namespace’inde çalıştığını kubectl get pods -n monitoring komutuyla kontrol edebilirsiniz.
3. Loki Stack Kurulumu
Loki ve Promtail’i ayrı bir Helm grafiği ile kurarız.
Örnek loki-values.yaml:
# loki-values.yaml
loki:
persistence:
enabled: true
storageClassName: standard # Kullanılan depolama sınıfına göre değişir
size: 200Gi # Loglar için yeterli depolama alanı
# Loki'nin ingress üzerinden erişilebilir olması için
ingress:
enabled: true
hosts:
- loki.your-domain.com # Kendi domaininizi kullanın
annotations:
kubernetes.io/ingress.class: nginx
promtail:
# Promtail'in tüm düğümlere DaemonSet olarak kurulmasını sağlar
# Kubernetes pod'larından logları otomatik olarak toplar
# Bu kısım genellikle varsayılan değerleriyle yeterlidir
Bu values.yaml dosyasını kullanarak kurulumu yapalım:
helm install loki loki/loki-stack \
--namespace monitoring \
-f loki-values.yaml
Promtail’in her Kubernetes düğümünde bir pod olarak çalıştığını ve logları toplamaya başladığını kontrol edin.
Yapılandırma ve Entegrasyon
Kurulumdan sonra, Grafana’nın Loki’yi veri kaynağı olarak tanıması ve Prometheus’un uygulamalarınızdan metrikleri toplaması için bazı yapılandırmalar gerekebilir.
Grafana’ya Loki Veri Kaynağı Ekleme
Eğer Grafana’yı kube-prometheus-stack ile kurduysanız, Prometheus zaten veri kaynağı olarak ekli olacaktır. Loki’yi eklemek için:
1. Grafana paneline erişin (örneğin grafana.your-domain.com).
2. Sol menüden “Configuration” (Dişli simgesi) -> “Data Sources” seçeneğine gidin.
3. “Add data source” butonuna tıklayın ve “Loki”yi seçin.
4. URL alanına Loki servisi adresini girin. Eğer loki servisi monitoring namespace’inde ise, URL http://loki.monitoring.svc.cluster.local:3100 olacaktır. Eğer ingress üzerinden erişiyorsanız, ingress adresini kullanın.
5. “Save & Test” butonuna tıklayarak bağlantıyı test edin.
Uygulama Metriklerini Toplama (Prometheus)
Uygulamalarınızın metriklerini Prometheus’a göndermek için genellikle iki yöntem kullanılır:
1. Prometheus Client Kütüphaneleri: Uygulamanızın içine Prometheus client kütüphanelerini entegre ederek kendi metriklerinizi açığa çıkarın (örneğin /metrics endpoint’inde).
2. ServiceMonitor / PodMonitor: Prometheus Operator, ServiceMonitor ve PodMonitor adlı Custom Resource Definitions (CRD’ler) sağlar. Bu CRD’ler, Prometheus’un hangi servislerden veya pod’lardan metrikleri çekeceğini tanımlamanıza olanak tanır.
Örneğin, uygulamanızın /metrics endpoint’inde metrikleri yayınladığını varsayalım:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app-monitor
namespace: my-app-namespace # Uygulamanızın namespace'i
spec:
selector:
matchLabels:
app: my-app # Uygulamanızın label'ı
endpoints:
- port: http-metrics # Uygulamanızın metrik endpoint'inin servis port adı
path: /metrics
Bu ServiceMonitor objesini oluşturduğunuzda, Prometheus otomatik olarak my-app etiketine sahip servisleri keşfedecek ve http-metrics portundaki /metrics yolundan metrikleri toplamaya başlayacaktır.
TOBS ile Kubernetes İzleme
Kurulum tamamlandıktan sonra, TOBS’u Kubernetes kümenizi izlemek için aktif olarak kullanmaya başlayabiliriz.
Metrikler ve Gösterge Panelleri
Grafana, Kubernetes izlemesi için birçok hazır gösterge paneli şablonu sunar. Bunları içe aktararak hızla başlayabilirsiniz:
* Kubernetes / Compute Resources / Cluster (ID: 1860): Küme genelindeki CPU, bellek, ağ kullanımı gibi temel kaynak metriklerini gösterir.
* Kubernetes / Compute Resources / Namespace (ID: 1861): Namespace bazında kaynak tüketimini izler.
* Kubernetes / Compute Resources / Pod (ID: 1862): Pod düzeyinde detaylı kaynak kullanımını gösterir.
* Node Exporter Full (ID: 1860): Düğüm düzeyindeki işletim sistemi metriklerini (disk I/O, CPU, bellek, ağ) detaylı olarak sunar.
* Kube-state-metrics (ID: 10856): Kubernetes API’sından toplanan pod durumu, dağıtım durumu, PVC durumu gibi metrikleri görselleştirir.
Bu panelleri Grafana’ya “Import” özelliği ile ekleyerek kümenizin sağlık durumunu anında görebilirsiniz. Kendi özel gösterge panellerinizi oluşturmak için PromQL’i kullanarak Prometheus metriklerini sorgulayabilirsiniz.
Örnek PromQL sorguları:
* Tüm düğümlerin ortalama CPU kullanımı: avg(node_cpu_seconds_total{mode="idle"}) by (instance)
* Belirli bir namespace’deki pod’ların bellek kullanımı: sum(container_memory_usage_bytes{namespace="my-app-namespace", container!=""}) by (pod)
* HTTP isteklerinin gecikme süresi (histogram): histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, job))
Log Yönetimi ve Analizi
Loki ve Promtail, Kubernetes loglarını merkezi bir yerde toplar. Grafana’nın “Explore” özelliği veya özel gösterge panelleri aracılığıyla logları sorgulayabilir ve analiz edebilirsiniz.
1. Grafana’da “Explore” (Pusula simgesi) bölümüne gidin.
2. Veri kaynağı olarak Loki’yi seçin.
3. LogQL kullanarak sorgularınızı yazın.
Örnek LogQL sorguları:
* Belirli bir namespace’deki tüm loglar: {namespace="my-app-namespace"}
* Belirli bir pod’daki hata logları: {namespace="my-app-namespace", pod="my-app-pod-xyz"} |= "error"
* Bir uygulamanın son 5 dakikadaki HTTP 500 hataları: {app="my-app"} |= "HTTP 500"
* Logları zaman damgasına göre filtreleme ve sıralama: {namespace="my-app-namespace"} | logfmt | level = "error"
Loglar ve metrikleri bir araya getirerek, bir performans düşüşünün veya hatanın nedenini daha hızlı anlayabilirsiniz. Örneğin, bir metrik grafiğinde CPU kullanımında ani bir artış gördüğünüzde, aynı zaman dilimindeki loglara bakarak sorunun kök nedenini (örneğin, bir uygulama hatası veya yoğun bir istek akışı) tespit edebilirsiniz.
Uyarı ve Bildirimler
Prometheus, belirli koşullar karşılandığında uyarıları tetiklemek için PrometheusRule kaynaklarını kullanır. Bu uyarılar Alertmanager’a gönderilir ve Alertmanager tarafından işlenir.
Örnek PrometheusRule (bir YAML dosyası olarak tanımlanır):
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: kubernetes-critical-alerts
namespace: monitoring
spec:
groups:
- name: kubernetes-critical
rules:
- alert: HighCPULoad
expr: sum(node_cpu_seconds_total{mode="idle"}) by (instance) < 0.2 # CPU boşta kalma süresi %20'nin altına düşerse
for: 5m
labels:
severity: critical
annotations:
summary: "Node {{ $labels.instance }} has high CPU load"
description: "CPU utilization on node {{ $labels.instance }} is above 80% for 5 minutes."
- alert: PodCrashLooping
expr: sum(kube_pod_container_status_restarts_total) by (namespace, pod, container) > 5 # Bir pod 5 dakikada 5'ten fazla yeniden başlarsa
for: 5m
labels:
severity: warning
annotations:
summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} is crashlooping"
description: "Container {{ $labels.container }} in pod {{ $labels.namespace }}/{{ $labels.pod }} has restarted more than 5 times in the last 5 minutes."
Bu kuralı kümenize uyguladığınızda, Prometheus belirtilen koşullar karşılandığında uyarıları tetikleyecektir. Alertmanager’ı Slack, e-posta veya diğer bildirim kanallarına uyarıları gönderecek şekilde yapılandırmanız gerekir. Alertmanager’ın yapılandırması genellikle kube-prometheus-stack Helm grafiğinin values.yaml dosyasında yapılır.
# prometheus-values.yaml içinde alertmanager bölümü
alertmanager:
config:
global:
resolve_timeout: 5m
route:
group_by: ['alertname', 'cluster', 'service']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: 'default-receiver'
receivers:
- name: 'default-receiver'
webhook_configs:
- url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX' # Slack webhook URL'niz
- name: 'email-receiver'
email_configs:
- to: 'your-email@example.com'
from: 'alertmanager@example.com'
smarthost: 'smtp.example.com:587'
auth_username: 'smtp_user'
auth_password: 'smtp_password'
En İyi Uygulamalar ve İpuçları
TOBS kurulumunuzdan en iyi şekilde yararlanmak için bazı en iyi uygulamalar ve ipuçları:
* Kaynak Yönetimi: TOBS bileşenleri (özellikle Prometheus ve Loki) önemli miktarda CPU, bellek ve depolama alanı tüketebilir. Pod’larınıza uygun kaynak limitleri ve istekleri (resources.limits ve resources.requests) tanımlayın.
* Depolama Stratejisi: Prometheus’un yerel depolaması kısa vadeli metrikler için iyidir. Uzun vadeli metrik depolama için Thanos, Mimir veya Cortex gibi çözümleri değerlendirin. Loki için ise logları S3 gibi nesne depolama hizmetlerinde saklayın.
* Yüksek Erişilebilirlik (HA): Üretim ortamlarında Prometheus ve Alertmanager’ı yüksek erişilebilirlik modunda çalıştırın. Prometheus için iki ayrı Prometheus sunucusu kurabilir, Alertmanager için ise birden fazla Alertmanager pod’u çalıştırabilirsiniz.
* Güvenlik:
* Grafana’ya erişimi şifre veya SSO ile koruyun.
* TOBS bileşenleri için Kubernetes RBAC (Role-Based Access Control) kurallarını uygulayın.
* Gerekirse ağ politikaları (Network Policies) ile TOBS bileşenleri arasındaki iletişimi kısıtlayın.
* Özelleştirme ve Otomasyon: Helm values.yaml dosyalarınızı versiyon kontrol sisteminde (Git) yönetin. CI/CD pipeline’larınıza Helm chart güncellemelerini entegre edin.
* Sürekli İyileştirme: İzleme ihtiyaçlarınız zamanla değişecektir. Gösterge panellerinizi ve uyarı kurallarınızı düzenli olarak gözden geçirin ve güncelleyin. Yeni uygulamalar ekledikçe veya mevcut uygulamaları değiştirdikçe izleme stratejinizi adapte edin.
* Korelasyon: Metrikler ve loglar arasındaki korelasyonu anlamak, sorun giderme sürecini hızlandırır. Grafana’da metrik ve log panellerini yan yana getirerek veya Grafana’nın “Logs” panelindeki metrik entegrasyonlarını kullanarak bu korelasyonu sağlayın.
Sonuç
Kubernetes, modern altyapıların omurgası haline gelirken, gözlemlenebilirlik de operasyonel mükemmelliğin vazgeçilmez bir parçası olmuştur. TOBS (The Observability Stack), Prometheus, Grafana, Loki ve Alertmanager gibi güçlü açık kaynaklı araçları bir araya getirerek Kubernetes kümeleriniz için kapsamlı ve ölçeklenebilir bir izleme çözümü sunar. Bu makalede ele aldığımız kurulum ve yapılandırma adımlarıyla, kümenizin ve uygulamalarınızın sağlığını, performansını ve davranışını derinlemesine anlayabilir, sorunları proaktif olarak tespit edebilir ve hızlıca çözüme kavuşturabilirsiniz. TOBS’u benimsemek, Kubernetes yolculuğunuzda daha fazla güven ve kontrol sahibi olmanızı sağlayacaktır.