← Semua picks

Workflow Recommended

Workflow Monitoring: Grafana + Loki + Tempo

Stack LGTM (Loki + Grafana + Tempo + Mimir) saya jalankan 24 bulan di fintech series-B Jakarta. Cost Rp 9-12 juta/bulan untuk 18 service. Ingest 1,8 TB log/bulan + 380 GB trace. Verdict Recommended untuk SMB-enterprise yang butuh ownership data.

1 Juli 2026 · 12 menit ·Use case: Stack observability self-host untuk fintech / enterprise Indonesia
GrafanaLokiTempoMimirPrometheus

TL;DR

  • Grafana untuk visualization + alerting hub.
  • Loki untuk log aggregation (label-based, cost-efficient).
  • Tempo untuk distributed tracing (OTel native).
  • Mimir untuk metric (Prometheus-compatible, multi-tenant).
  • Total cost untuk 18 service fintech: Rp 9-12 juta/bulan all-in.
  • Verdict: Recommended untuk SMB-enterprise Indonesia yang butuh observability self-host dengan ownership data.

Konteks

Saya jalankan stack ini 24 bulan di fintech series-B Jakarta (Juni 2024 - Mei 2026). Skala observability:

  • 18 microservice (mixed Java, Go, Node, Python)
  • 6 frontend channel
  • ~85 deploy/minggu
  • Ingest log: 1,8 TB/bulan rata-rata, peak 3,2 TB/bulan saat campaign
  • Ingest trace: 380 GB/bulan
  • Ingest metric: 45 GB/bulan
  • Active series Prometheus: 850k

Sebelumnya di BUMN 2022-2024 saya jalankan ELK (Elasticsearch + Logstash + Kibana) + Prometheus + Jaeger. Pengalaman ELK menjadi baseline pembanding untuk angka cost + ops.

Pricing (Juni 2026)

Grafana

  • Open Source self-host: software gratis (AGPL)
  • Saya pakai self-host di GKE, 2 replica e2-small: Rp 920 ribu/bulan

Loki

  • Open Source: gratis
  • Infra Loki cluster:
    • 3 ingester pod e2-medium: Rp 2,1 juta/bulan
    • 2 querier pod e2-small: Rp 920 ribu/bulan
    • 1 distributor pod e2-small: Rp 460 ribu/bulan
    • Storage chunk di Cloudflare R2 (compressed): Rp 1,8 juta/bulan untuk 30 hari hot + 90 hari warm
  • Total Loki: Rp 5,3 juta/bulan

Tempo

  • Open Source: gratis
  • Infra Tempo cluster:
    • 2 ingester pod e2-medium: Rp 1,4 juta/bulan
    • 1 querier pod e2-small: Rp 460 ribu/bulan
    • Storage trace di R2: Rp 1,2 juta/bulan untuk 7 hari trace + 30 hari sampled
  • Total Tempo: Rp 3,1 juta/bulan

Mimir

  • Open Source: gratis
  • Infra Mimir cluster:
    • 3 ingester pod e2-medium: Rp 2,1 juta/bulan
    • 2 querier pod e2-small: Rp 920 ribu/bulan
    • Storage block di R2: Rp 850 ribu/bulan untuk 13 bulan metric
  • Total Mimir: Rp 3,9 juta/bulan

Total LGTM stack

KomponenCost/bulan
GrafanaRp 920 ribu
Loki + storageRp 5,3 juta
Tempo + storageRp 3,1 juta
Mimir + storageRp 3,9 juta
OTel Collector (DaemonSet)Rp 1,2 juta
Promtail (DaemonSet)Rp 600 ribu
Alertmanager HARp 460 ribu
Total all-inRp 15,5 juta/bulan

Saya negosiasi compute dengan committed use 1 tahun di GCP, dapat diskon ~25%. Real run-rate: Rp 11,6 juta/bulan.

Bandingkan Datadog equivalent

Untuk 18 service × ~3 host equivalent + ingest 1,8 TB log/bulan + 380 GB trace:

  • Datadog Infrastructure: 54 host × USD 31 = USD 1.674/bulan
  • Datadog APM: 18 host × USD 36 = USD 648/bulan
  • Datadog Log Management: 1,8 TB × USD 1,06/GB ingest = USD 1.908/bulan
  • Datadog Log Retention: USD 1,70/juta event × ~750 juta event = USD 1.275/bulan
  • Datadog RUM: 18 service × USD 12 = USD 216/bulan

Total Datadog: USD 5.721/bulan = Rp 86 juta/bulan

Self-host LGTM 7,4x lebih murah dari Datadog di skala ini. Trade-off: ops overhead engineer 12-18 jam/bulan + learning curve LogQL/TraceQL/PromQL.

SLO + performance (24 bulan data)

MetrikTarget SLORealisasi
Ingest availability log> 99,9%99,94%
Ingest availability trace> 99,9%99,92%
Ingest availability metric> 99,95%99,97%
Query latency Loki p99 (24h range)< 3 detik2,1 detik
Query latency Tempo p99 (trace by ID)< 2 detik1,4 detik
Query latency Mimir p99 (1h range)< 1 detik720ms
Alert latency event-to-notify p99< 60 detik38 detik
Retention log compliant7 tahun archivepassed (audit Q1 2026)

Insiden major selama 24 bulan: 5 kali ingest disruption > 10 menit. Root cause: 2 kali Loki ingester OOM (memory tuning), 1 kali R2 outage area Asia, 1 kali deploy regression alertmanager rule, 1 kali Postgres metadata lock.

Architecture diagram

[Service Pods]

   ├── Promtail DaemonSet ─────→ Loki Distributor ─→ Ingester ─→ R2

   ├── OTel SDK (trace) ───────→ OTel Collector ──→ Tempo ────→ R2

   └── Prometheus exporter ────→ OTel Collector ──→ Mimir ────→ R2

                                       └─→ Alertmanager ──→ Slack / PagerDuty / Email
                                                
                                  Grafana ←─ (query Loki, Tempo, Mimir)

                                       └─→ Dashboard ←─ Engineer / SRE

Service correlation

Pattern critical: trace ID + log + metric correlate via traceId label.

  • OTel SDK inject traceId di MDC (Java) / context (Go, Node)
  • Promtail extract traceId dari log line, set sebagai label
  • Grafana Loki panel auto-link ke Tempo trace via derived field config
  • Dashboard payment service: 1 click dari log error → trace span → metric panel di waktu yang sama

Built once, reuse across all service. Reduce MTTI (Mean Time To Investigate) dari 8-12 menit ke 2-3 menit.

Throughput + scalability

BebanLoki ingestTempo ingestMimir ingest
Idle pagi15 MB/s log2 MB/s trace800 KB/s metric
Peak normal (jam 9-11)85 MB/s18 MB/s4,2 MB/s
Peak campaign (payday)280 MB/s65 MB/s12 MB/s
Max sustained380 MB/s (test)95 MB/s18 MB/s

Threshold scaling:

  • Loki ingester: scale horizontal di 80% memory utilization. Saya pakai HPA dengan custom metric.
  • Tempo ingester: scale di 75% CPU.
  • Mimir ingester: scale di 70% memory (memory bound karena WAL).

Untuk skala 5-10x dari sekarang (90 service): tinggal scale horizontal, tidak perlu redesign. Untuk skala 50x: butuh sharding multi-tenant dan kemungkinan switch ke ClickHouse untuk log analytical.

HA + DR

Region setup

  • Primary: GKE asia-southeast2 (Jakarta)
  • DR: GKE asia-southeast1 (Singapore), 30% capacity standby
  • Storage: R2 multi-region replication (auto)

RPO/RTO target

KomponenRPO targetRTO targetRealisasi
Loki ingest30 detik5 menit18 detik / 3,2 menit
Tempo ingest30 detik5 menit22 detik / 3,8 menit
Mimir ingest30 detik5 menit15 detik / 2,9 menit
Grafana UIN/A (stateless)30 detik18 detik
Alertmanager0 (HA gossip)5 detikpassed

Failover test quarterly: chaos engineering drill kill primary region, verify auto-failover ke Singapore. RTO realisasi konsisten di bawah target.

Backup + archive

3-tier storage:

  1. Hot (Loki ingester chunk): 30 hari di R2 standard tier
  2. Warm (queried occasional): 60 hari di R2 infrequent access (cheaper)
  3. Archive (compliance OJK 7 tahun): export ke S3 Glacier Deep Archive

Job archive nightly: lakukan compaction Loki chunk lama, upload ke Glacier, delete dari hot tier. Cost archive 7 tahun all-in: Rp 18-25 juta sekali bayar (storage Glacier murah).

Trade-off vs alternative

vs Datadog managed

AspekLGTM self-hostDatadog
Cost (skala saya)Rp 11,6 juta/bulanRp 86 juta/bulan
Setup time4-6 minggu1-2 minggu
Ops time/bulan12-18 jam2-4 jam
Feature breadthcore + pluginpremium (RUM, Synthetic, APM AI)
Vendor lock-inminimtinggi
Data residencycontrollable (R2 Jakarta)tidak
SLA contractDIY99,8%
Learning curvesedang-tinggirendah

Untuk BUMN dengan budget IT besar + butuh fitur premium: Datadog worth-nya. Untuk fintech series-B / SMB enterprise: LGTM self-host 7-8x lebih murah dengan trade-off ops manageable.

vs ELK Stack (Elasticsearch + Logstash + Kibana)

ELK pengalaman saya di BUMN 2022-2024:

  • Cost equivalent: Rp 22-28 juta/bulan untuk scale similar
  • Ops time: 30-45 jam/bulan (JVM tuning, shard management, snapshot)
  • Strength: full-text search powerful, Kibana visualization mature
  • Weakness: storage cost 4-6x dari Loki, JVM ops burden

Saya rekomendasi ELK only kalau Anda butuh full-text search + business analytical use case di log. Untuk operational log: LGTM unggul.

vs OpenTelemetry-native vendor (Honeycomb, Lightstep, Signoz)

Honeycomb / Lightstep cocok untuk APM-first usage dengan high-cardinality query. Pricing premium. Signoz open source + cocok all-in-one tapi maturity lebih rendah dari LGTM.

Untuk Indonesia, saya pilih LGTM karena: ekosistem terbesar, community Indonesia ada (Grafana meetup Jakarta aktif), hiring engineer berpengalaman lebih mudah.

Migration risk + path

Dari ELK ke LGTM

12 minggu rencana, realisasi 14 minggu di BUMN:

  1. Minggu 1-2: Setup LGTM cluster paralel ELK
  2. Minggu 3-4: Dual-ship log dari Promtail ke Loki + Filebeat ke ELK
  3. Minggu 5-8: Recreate dashboard Kibana → Grafana (per domain)
  4. Minggu 9-11: Cutover query primary ke Loki, ELK jadi read-only backup
  5. Minggu 12-14: Decommission ELK, archive existing index ke Glacier

Pain point: LogQL semantik beda dengan Elasticsearch DSL. Engineer butuh re-train 4-8 jam workshop. Saya bikin “ELK → LogQL cheatsheet” untuk transition.

Dari Jaeger ke Tempo

Smooth karena OTel-compatible. Re-point OTel collector exporter dari Jaeger ke Tempo, archive historical trace dari Jaeger, decommission Jaeger. 2-3 minggu kerja.

Common pitfall

  1. Loki label cardinality explosion. Label dengan unique value tinggi (user ID, request ID) bunuh Loki performance. Pakai label hanya untuk kategori kasar (service, env, level), simpan ID di body log + extract via parser di query time.
  2. Tempo trace tanpa sampling. 100% trace = cost storage massive. Saya pakai head-based sampling 10% untuk service biasa, 100% untuk service payment. Tail-based sampling (sample berdasarkan error / latency) di OTel Collector untuk smart sampling.
  3. Mimir cardinality runaway. Active series > 1 juta = memory + cost issue. Audit prometheus_tsdb_head_series quarterly, drop label tidak terpakai.
  4. Grafana dashboard sprawl. Setelah 12 bulan saya punya 240 dashboard, ~140 unused. Folder organization + tagging penting. Quarterly cleanup audit.
  5. Alertmanager spam. Alert dengan threshold terlalu sensitif bikin alert fatigue. Saya pakai SLO-based alerting (multi-window burn rate) bukan threshold statis. Reduce alert volume 70%.

Indonesia specific

Data residency

R2 Cloudflare punya region Jakarta (asia-southeast2). Saya bind Loki chunk + Tempo trace + Mimir block ke R2 Jakarta bucket. Tidak ada data observability keluar Indonesia. Audit OJK Q1 2026 passed dengan finding 0 terkait data residency observability.

Bandwidth

Saya pakai compression OTel + Promtail (snappy) sebelum ingest. Saves ~70% bandwidth dari pod ke ingester. Penting karena bandwidth egress di GCP Indonesia masih premium.

Hiring

Engineer berpengalaman LGTM stack di Indonesia masih relatif terbatas. Saya invest 2x quarterly workshop internal + sponsor 2 engineer ke Grafana Cloud certification. Hiring senior LGTM engineer butuh kompensasi premium (Rp 25-40 juta/bulan untuk senior SRE).

Yang surprising

Setelah 24 bulan: Loki cost storage actually lebih rendah dari ekspektasi saya. Kompresi snappy + label-based index bikin 1,8 TB log/bulan jadi ~250 GB compressed di R2. Cost storage R2 untuk 30 hari hot tier: Rp 850 ribu — kurang dari setengah estimate awal.

Surprise lain: query LogQL terasa lebih lambat dari Kibana di full-text use case (yang memang bukan strength Loki), tapi terasa lebih cepat di structured log query dengan label filter. Untuk 80% workload operational (debug specific service di window 1-4 jam), Loki feel lebih responsif.

Verdict

Recommended untuk SMB-enterprise Indonesia.

  • Default fintech series-B / enterprise mid: LGTM self-host. Cost Rp 11-15 juta/bulan untuk 15-25 service. ROI vs Datadog jelas.
  • BUMN besar dengan budget IT Rp 20+ miliar/tahun + butuh premium feature: Datadog atau New Relic worth dipertimbangkan untuk APM AI + RUM.
  • SMB Indonesia < 5 service: Grafana Cloud free tier (50 GB log/bulan, 10k metric series) cukup. Self-host LGTM overkill di skala ini.
  • Skip stack ini kalau tim engineer < 5 dan ops capacity tidak ada — pakai managed (Grafana Cloud Pro, Datadog) bahkan dengan cost premium.

Threshold konkret untuk adopt self-host LGTM: 8+ service + dedicated SRE (minimal 0,5 FTE) + budget Rp 10 juta/bulan untuk observability. Di bawah ini, managed lebih masuk akal walaupun mahal.

Ditulis oleh Asti Larasati

// Pick Workflow lain


← Semua picks RSS feed