Episode ini membuka fase observability: mengaktifkan Prometheus metrics di endpoint /metrics, memahami tipe metrik counter, gauge, dan histogram, mengenali metrik penting per entrypoint, router, dan service, konfigurasi scrape Prometheus, serta dashboard Grafana dan query PromQL untuk alerting.

Traefik tanpa observability adalah kotak hitam: request melayang, error muncul entah di mana. Episode 23 menyalakan lampunya dengan metrics. Traefik mengekspos metrik Prometheus di endpoint /metrics — data terstruktur tentang setiap entrypoint, router, dan service yang menjadi bahan bakar dashboard dan alerting.
Kita akan mengaktifkan metrik, mempelajari tipe-tipe metrik yang tersedia, memilih metrik yang paling penting, menghubungkan Prometheus untuk scraping, lalu menampilkan di Grafana dengan PromQL. Di akhir episode, kalian bisa menjawab pertanyaan "berapa persen request kita gagal?" dalam hitungan detik.
Aktifkan metrics provider di static config:
metrics:
prometheus:
addEntryPointsLabels: true
addServicesLabels: true
entryPoint: metrics
buckets:
- 0.1
- 0.3
- 1.2
- 5.0addEntryPointsLabels: true: metrik dilabeli nama entrypoint.addServicesLabels: true: metrik dilabeli nama service.entryPoint: metrics: endpoint /metrics dipublikasikan di entrypoint bernama metrics.buckets: batas-batas histogram latensi dalam detik.Entrypoint metrics harus didefinisikan dan diisolasi — jangan expose ke publik:
entryPoints:
metrics:
address: ":9100"Provider metrics lain yang didukung: Datadog, StatsD, dan InfluxDB — pola konfigurasi serupa, menyesuaikan format masing-masing.
Prometheus diarahkan untuk meng-scrape endpoint /metrics Traefik. Konfigurasi job di prometheus.yml:
scrape_configs:
- job_name: "traefik"
static_configs:
- targets: ["traefik:9100"]
labels:
instance: "edge"Dengan setup ini Prometheus mengambil metrik setiap interval scrape default (15 detik) dan menyimpannya dengan label instance: edge. Konfirmasi dari sisi Traefik:
curl -s http://localhost:9100/metrics | head -n 20Perintah curl di atas memperlihatkan baris metrik dalam format text exposition Prometheus — kunci metrik pertama adalah traefik_entrypoint_requests_total.
Prometheus punya tiga tipe dasar yang semua metrik Traefik gunakan:
traefik_service_requests_total.traefik_entrypoint_requests_total -> total request per entrypoint
traefik_entrypoint_request_duration_seconds -> latensi per entrypoint
traefik_entrypoint_requests_bytes_total -> ukuran request
traefik_entrypoint_responses_bytes_total -> ukuran response
traefik_router_requests_total -> total request per router
traefik_router_requests_tls_total -> request TLS per router
traefik_service_requests_total -> total request per service
traefik_service_request_duration_seconds -> latensi per service
traefik_service_open_connections -> koneksi terbuka per service
traefik_service_requests_bytes_total -> ukuran request per serviceMetrik-metrik ini punya label seperti code, method, entrypoint, router, dan service — kombinasi label inilah yang memberi fleksibilitas query PromQL.
Beberapa query PromQL yang paling berguna:
sum(rate(traefik_service_requests_total{code=~"5.."}[5m]))
/ sum(rate(traefik_service_requests_total[5m]))Query di atas menghitung rasio request berstatus 5xx terhadap seluruh request dalam 5 menit — metrik kunci health sebuah service.
histogram_quantile(0.95,
sum(rate(traefik_service_request_duration_seconds_bucket[5m])) by (le))Ini menampilkan latensi percentile 95 — jika melonjak, ada backend yang melambat.
Grafana menampilkan query-query tersebut secara visual. Traefik Labs menyediakan dashboard resmi yang bisa diimpor langsung di Grafana (di cari sebagai "Traefik" di grafana.com dashboards). Dashboard tersebut menampilkan peta entrypoint, error rate, latensi, dan status service sekaligus — titik awal yang sangat baik sebelum kalian membuat dashboard custom.
Warning
Jangan expose entrypoint metrics ke internet. Data metrik mengungkap topologi internal, volume trafik, dan pola error — sangat berguna bagi penyerang. Batasi akses dengan network policy atau IPWhiteList.
Inti yang harus dibawa pulang:
metrics.prometheus dan publikasikan di entrypoint khusus /metrics.prometheus.yml.rate dan histogram_quantile untuk error ratio dan latensi.Di episode 24 selanjutnya kita akan membahas access logs & debugging — mengaktifkan access log dengan format Common dan JSON, filter dan field kustom, agregasi log terpusat dengan Loki dan ELK, serta teknik debugging dengan log level, API inspection, dan dashboard.