Episode 8 membuka mata mesh: pipeline telemetry v2, metrik Prometheus seperti istio_requests_total, distributed tracing dengan Jaeger lengkap dengan header propagasi, log akses, serta dashboard Kiali dan Grafana.

Dari episode 5 sampai 7, kalian mengatur traffic dan ketahanan. Tapi bagaimana kalian tahu mesin ini bekerja dengan baik? Jawabannya: observability. Episode 8 ini membangun fondasi untuk melihat apa yang terjadi di dalam mesh — metrik, log, dan trace — serta dashboard yang mempermudah pembacaan.
Ini juga episode yang akan kalian rujuk terus di episode 20. Anggap episode ini fondasi telemetry, dan episode 20 nanti sebagai pengoptimalannya.
Istio modern memakai Telemetry v2, model metrik yang memanfaatkan metrik standar Envoy dengan penggabungan scraping Prometheus. Sidecar mengekspos metrik di port 15020:
kubectl exec -it productpage-abc123 -c istio-proxy -- curl localhost:15020/stats/prometheus | head -20curl localhost:15020/stats/prometheus menampilkan metrik Prometheus dalam format teks. Yang paling penting untuk traffic, bukan resource, adalah metrik dengan prefiks istio_:
istio_requests_total: jumlah request per pasangan layanan, termasuk label response_code dan response_flags.istio_request_duration_milliseconds: histogram durasi request.istio_request_bytes dan istio_response_bytes: ukuran payload.Contoh query untuk memantau error rate productpage:
sum(rate(istio_requests_total{reporter="destination",destination_service="productpage.default.svc.cluster.local",response_code=~"5.."}[5m]))
/
sum(rate(istio_requests_total{reporter="destination",destination_service="productpage.default.svc.cluster.local"}[5m]))Persamaan di atas menghitung persentase request 5xx terhadap total request dalam lima menit. reporter="destination" menandakan metrik dicatat di sisi penerima, sehingga kalian melihat pengalaman backend, bukan perspektif klien.
Trace menghubungkan perjalanan satu request melewati banyak service. Agar trace utuh, Envoy menyuntikkan header propagasi ke setiap request. Istio mendukung format standar seperti x-request-id, b3, dan traceparent. Kuncinya: konteks trace harus dioper dari satu service ke service berikutnya, jadi aplikasi harus meneruskan header tersebut ke downstream.
Sampling mengontrol berapa persen request yang di-trace. Atur lewat Telemetry API:
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- providers:
- name: otel
randomSamplingPercentage: 10randomSamplingPercentage: 10 membuat 10 persen request di-trace. Di produksi dengan volume tinggi, sampling 100 persen biasanya terlalu mahal — episode 20 akan membahas strategi sampling lanjutan.
Setelah Jaeger atau Tempo terpasang dan trace diterima, kalian bisa melihat waterfall: durasi setiap span, service mana yang lambat, dan di mana kegagalan terjadi. Istio menghasilkan span untuk setiap hop Envoy; aplikasi bisa menambah span kustom lewat OpenTelemetry SDK.
Log akses Envoy mencatat setiap request yang melewati sidecar. Aktifkan lewat Telemetry API:
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
accessLogging:
- providers:
- name: envoyDengan provider envoy, log berformat default muncul di container istio-proxy dan bisa dibaca:
kubectl logs productpage-abc123 -c istio-proxy | tail -5kubectl logs ... -c istio-proxy menampilkan log akses tiap request. Untuk parsing otomatis di production, ubah formatnya ke JSON dan arahkan ke pipeline log — kita akan bahas agregasi log di episode 20.
Kiali adalah dashboard khusus Istio. Dia membangun peta layanan (service graph) dari metrik dan konfigurasi mesh:
kubectl apply -f samples/addons/kiali.yaml
kubectl port-forward -n istio-system svc/kiali 20001:20001kubectl port-forward ... svc/kiali 20001:20001 membuka Kiali di localhost:20001. Dari sini kalian melihat grafik trafik antar service, validasi konfigurasi, dan metrik request per edge — alat yang sangat membantu episode 9 dan 19.
Grafana menampilkan dashboard metrik Prometheus yang sudah siap pakai:
kubectl port-forward -n istio-system svc/grafana 3000:3000Dashboard Istio menyajikan Overview, Mesh, Workload, dan Service dalam satu tempat. Semua metrik yang kita bahas tadi divisualisasikan tanpa menulis query manual.
Info
Untuk produksi, jangan menyalin semua addon demo. Pilih dashboard yang benar-benar dipakai dan siapkan storage untuk Prometheus agar data tidak hilang saat Pod restart.
Episode 8 menghidupkan mata mesh: Telemetry v2 dengan metrik Prometheus di port 15020, distributed tracing dengan header propagasi dan sampling, log akses Envoy, serta dashboard Kiali dan Grafana yang menyajikan semuanya dalam satu tempat.
Inti yang harus dibawa pulang:
istio_requests_total, istio_request_duration_milliseconds.reporter="destination" menunjukkan perspektif backend.Di episode 9 selanjutnya kita akan menjaga konfigurasi tetap sehat: configuration management dan validation — istioctl analyze, cara membaca hasil validasi, EnvoyFilter dan praktik terbaiknya, serta pola GitOps dengan ArgoCD atau Flux.