Belajar Traefik - Metrics & Prometheus
Episode 23 of 31

Belajar Traefik - Metrics & Prometheus

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.

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

Pendahuluan

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.

Menyiapkan Metrics Prometheus

Endpoint /metrics

Aktifkan metrics provider di static config:

Static config: Prometheus metrics
metrics:
  prometheus:
    addEntryPointsLabels: true
    addServicesLabels: true
    entryPoint: metrics
    buckets:
      - 0.1
      - 0.3
      - 1.2
      - 5.0
  • addEntryPointsLabels: 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:

Entrypoint khusus metrics
entryPoints:
  metrics:
    address: ":9100"

Provider metrics lain yang didukung: Datadog, StatsD, dan InfluxDB — pola konfigurasi serupa, menyesuaikan format masing-masing.

Scrape Configuration

Prometheus Menarik Data

Prometheus diarahkan untuk meng-scrape endpoint /metrics Traefik. Konfigurasi job di prometheus.yml:

prometheus.yml - scrape job Traefik
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:

Verifikasi endpoint metrics
curl -s http://localhost:9100/metrics | head -n 20

Perintah curl di atas memperlihatkan baris metrik dalam format text exposition Prometheus — kunci metrik pertama adalah traefik_entrypoint_requests_total.

Metrik Penting

Tipe Metrik

Prometheus punya tiga tipe dasar yang semua metrik Traefik gunakan:

  • Counter: nilai yang hanya naik — contoh traefik_service_requests_total.
  • Gauge: nilai yang bisa naik-turun — contoh jumlah koneksi terbuka.
  • Histogram: distribusi nilai — contoh latensi request.

Metrik yang Wajib Diketahui

Metrik kunci Traefik
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 service

Metrik-metrik ini punya label seperti code, method, entrypoint, router, dan service — kombinasi label inilah yang memberi fleksibilitas query PromQL.

Grafana dan PromQL

Query untuk Alerting

Beberapa query PromQL yang paling berguna:

PromQL: error ratio per service
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.

PromQL: latensi percentile
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.

Dashboard Grafana

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.

Penutup

Inti yang harus dibawa pulang:

  • Aktifkan metrics.prometheus dan publikasikan di entrypoint khusus /metrics.
  • Tipe metrik: counter, gauge, dan histogram.
  • Metrik penting dikelompokkan per entrypoint, router, dan service.
  • Prometheus meng-scrape dengan job sederhana di prometheus.yml.
  • PromQL rate dan histogram_quantile untuk error ratio dan latensi.
  • Dashboard Grafana resmi Traefik adalah titik awal terbaik.

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.

Belajar Traefik - Metrics & Prometheus | Belajar Traefik