Belajar Observability dengan LGTM Stack - Kubernetes Observability
Episode 27 of 36

Belajar Observability dengan LGTM Stack - Kubernetes Observability

Kubernetes menambah lapisan kompleksitas baru pada observability. Episode ini membahas arsitektur monitoring node, pod, dan cluster, sumber metrik seperti cAdvisor dan kube-state-metrics, service discovery dan relabeling, koleksi log pod, serta tracing lewat service mesh.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Pod yang hidup mati dalam hitungan detik, IP yang selalu berubah, dan node yang naik turun — Kubernetes adalah lingkungan yang paling dinamis bagi observability. Pendekatan monitoring statis sama sekali tidak berlaku di sini.

Episode ini membahas arsitektur monitoring Kubernetes, sumber-sumber metrik, service discovery dengan relabeling, koleksi log pod, serta tracing lintas service di dalam cluster.

Arsitektur Monitoring Kubernetes

Empat Lapisan Pemantauan

  • Node-level monitoring: metrik sistem dari kubelet dan node exporter.
  • Pod-level monitoring: metrik dari masing-masing pod dan container.
  • Container metrics: CPU, memori, dan I/O per container.
  • Cluster-level monitoring: kondisi cluster secara keseluruhan, termasuk scheduler dan API server.
Lapisan monitoring K8s
node -> pod -> container -> cluster

Pola node -> pod -> container -> cluster adalah peta berpikir untuk merancang dashboard observability K8s.

Sumber Metrik Kubernetes

Dari Mana Metrik Berasal

  • cAdvisor metrics: metrik container bawaan dari kubelet.
  • Kubelet metrics: metrik health dan operasi node.
  • kube-state-metrics: status objek K8s seperti deployment, pod, dan HPA.
  • Metrics Server API: metrik singkat untuk HPA.
  • Control plane metrics: metrik API server, scheduler, dan controller-manager.
Melihat endpoint metrik kubelet
curl -sk https://<node>:10250/metrics

Perintah curl -sk .../metrics menampilkan metrik kubelet secara mentah — di produksi, scraping dilakukan otomatis oleh service discovery.

Service Discovery dan Relabeling

Kubernetes SD

Prometheus dan Mimir memakai Kubernetes service discovery untuk menemukan target secara otomatis:

Scrape config dengan kubernetes_sd
scrape_configs:
  - job_name: kubernetes-pods
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        regex: "true"
        action: keep

Konfigurasi role: pod membuat scraper menemukan semua pod, lalu relabeling memfilter pod yang punya anotasi scrape aktif.

Anotasi dan ServiceMonitor

  • Pod annotations: prometheus.io/scrape: "true" menandai pod yang harus di-scrape.
  • Service monitors: CRD Prometheus Operator yang mendefinisikan target secara deklaratif — dibahas di episode 28.

Koleksi Log Pod

DaemonSet dan Sidecar

Log pod dikumpulkan dengan dua pola utama:

  • DaemonSet pattern: satu collector per node (misalnya Grafana Alloy) membaca log semua pod di node tersebut.
  • Sidecar pattern: satu container collector menyatu dengan pod aplikasi.
Konsep DaemonSet log collector
kind: DaemonSet
metadata:
  name: alloy
spec:
  template:
    spec:
      containers:
        - name: alloy
          image: grafana/alloy:latest

kind: DaemonSet memastikan satu instance Alloy berjalan di setiap node cluster.

Event dan Audit Logs

  • Event logs: peristiwa K8s seperti pod restart dan scheduling.
  • Audit logs: catatan permintaan ke API server — penting untuk kepatuhan di episode 33.

Tracing di Kubernetes

Service Mesh dan Context Propagation

Tracing lintas pod membutuhkan context propagation otomatis:

  • Service mesh integration: Istio dan Linkerd menyuntikkan tracing secara otomatis — dibahas di episode 29.
  • Ingress controller tracing: trace dimulai di titik masuk cluster.
  • Pod instrumentation: OTel SDK di dalam pod meneruskan context lewat header.
Alur trace di cluster
ingress -> pod A -> pod B -> pod C -> backend

Pola ingress -> pod A -> pod B -> pod C adalah trace satu request di dalam cluster — tanpa propagation, rantai ini putus di setiap hop.

Info

Kombinasi paling efektif di K8s: scraping otomatis lewat service discovery, koleksi log dengan DaemonSet Alloy, dan tracing otomatis lewat service mesh. Semuanya bekerja tanpa mengubah kode aplikasi.

Penutup

Di episode 27 ini kalian memahami arsitektur monitoring node, pod, container, dan cluster, sumber metrik cAdvisor, kubelet, dan kube-state-metrics, service discovery dan relabeling dengan anotasi, koleksi log pod dengan DaemonSet dan sidecar, serta tracing lintas pod.

Inti yang harus dibawa pulang:

  • Kubernetes menuntut monitoring berbasis discovery, bukan statis.
  • cAdvisor, kubelet, dan kube-state-metrics adalah sumber metrik utama.
  • Anotasi dan ServiceMonitor menandai target scraping.
  • DaemonSet Alloy mengumpulkan log per node.
  • Service mesh mengotomatiskan tracing lintas pod.

Di episode 28 selanjutnya kita akan membahas deploying LGTM Stack di Kubernetes — Helm charts untuk masing-masing komponen, resource K8s seperti StatefulSet dan PersistentVolumeClaim, desain high availability, serta penggunaan operator. Stack lokal kalian akan berpindah ke dalam cluster sungguhan.

Belajar Observability dengan LGTM Stack - Kubernetes Observability | Belajar Observability dengan LGTM Stack