Belajar Observability dengan LGTM Stack - Scaling Loki for Production
Episode 23 of 36

Belajar Observability dengan LGTM Stack - Scaling Loki for Production

Loki harus diskalakan seiring volume log yang membesar. Episode ini membahas mode deployment monolithic, simple scalable, dan microservices, strategi scaling ingestion dan query, manajemen index TSDB dan BoltDB, optimasi storage, serta desain label yang sehat.

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

Pendahuluan

Loki yang berjalan dalam satu proses cukup untuk pengembangan, tapi produksi menuntut lebih: log dari ribuan service, pertumbuhan terabyte, dan query yang harus tetap cepat. Loki menyediakan beberapa mode deployment untuk setiap tahap pertumbuhan.

Episode ini membahas mode deployment Loki, strategi scaling ingestion dan query, manajemen index, optimasi storage, serta desain label — faktor yang paling menentukan biaya dan performa jangka panjang.

Mode Deployment Loki

Dari Monolithic ke Microservices

  • Monolithic mode: semua komponen dalam satu proses — cukup untuk beban sedang.
  • Simple scalable mode: tiga target (read, write, backend) yang bisa diskalakan — titik tengah yang paling umum dipakai.
  • Microservices mode: setiap komponen terpisah — untuk skala terbesar.
  • Read/write split mode: memisahkan jalur baca dan tulis.
Peta mode deployment
monolithic -> simple scalable -> microservices

Pola monolithic -> simple scalable -> microservices adalah jalur pertumbuhan yang lazim: naikkan mode seiring kebutuhan, bukan sejak awal.

Simple Scalable Mode

Mode ini membagi menjadi target read dan write:

Target di simple scalable mode
target: read,write

Nilai target: read,write memisahkan ingester (write) dari querier (read), masing-masing bisa diskalakan sendiri.

Strategi Scaling

Ingestion dan Query

  • Ingestion rate limits: tetapkan batas per tenant agar satu tenant tidak membanjiri cluster.
  • Query performance: scale target read saat query melambat.
  • Retention policies: atur lama penyimpanan log dan pembaruan data lama.
  • Compaction configuration: jadwalkan compaction untuk menggabungkan chunk dan menghapus data kedaluwarsa.
Konsep limit ingestion
limits_config:
  per_stream_rate_limit: 3MB
  per_stream_rate_limit_burst: 15MB

Batas per_stream_rate_limit: 3MB melindungi cluster dari aliran log yang tiba-tiba melonjak.

Manajemen Index

TSDB vs BoltDB

Loki memiliki dua format index:

  • TSDB index: format terbaru yang direkomendasikan — sharding bawaan dan lebih efisien.
  • BoltDB index: format legacy — masih didukung tapi disarankan migrasi.
Memilih format index
schema_config:
  configs:
    - from: "2026-01-01"
      index:
        period: 24h
      object_store: s3
      schema: v13

Blok schema_config menentukan format schema dan periode index — pastikan memakai schema terbaru yang mendukung TSDB.

Index Caching

Akses index yang sering di-cache untuk mempercepat query. Cache bisa memakai memcached atau redis pada deployment besar.

Optimasi Storage

Chunk dan Kompresi

  • Chunk encoding: ukuran chunk memengaruhi efisiensi query — terlalu kecil mahal, terlalu besar lambat.
  • Compression algorithms: gzip dan snappy untuk menekan ukuran.
  • Retention vs cost: semakin lama retention, semakin besar biaya storage.
  • Tiered storage: pindahkan log lama ke kelas storage murah.
Konsep retention
compactor:
  retention_enabled: true
limits_config:
  retention_period: 30d

Nilai retention_period: 30d menetapkan log disimpan 30 hari — sesuaikan dengan kebutuhan dan kepatuhan di episode 33.

Desain Label

Prinsip dan Anti-Pattern

Label menentukan cardinality — dan cardinality menentukan biaya:

  • Cardinality management: batasi jumlah nilai per label.
  • Static vs dynamic labels: label statis seperti job dan cluster aman; label dinamis berbahaya.
  • Anti-patterns yang dihindari: jangan pernah memakai user_id, trace_id, atau IP sebagai label.

Warning

Satu label bernilai tinggi bisa membuat index Loki membengkak dan query melambat berkali lipat. Jika ragu apakah sebuah nilai sebaiknya menjadi label, jawabannya hampir selalu: simpan di isi baris log, bukan di label.

Label aman vs berbahaya
aman: job, service, level, cluster, environment
berbahaya: user_id, trace_id, ip_address, request_path

Daftar aman: job, service, level di atas adalah titik awal desain label yang sehat.

Penutup

Di episode 23 ini kalian memahami mode deployment Loki dari monolithic hingga microservices, strategi scaling ingestion dan query dengan limit serta retention, manajemen index TSDB dan BoltDB, optimasi storage dengan kompresi dan tiering, serta desain label yang sehat.

Inti yang harus dibawa pulang:

  • Naikkan mode deployment sesuai tahap pertumbuhan.
  • Batasi rate ingestion per stream untuk melindungi cluster.
  • Gunakan TSDB index, bukan BoltDB.
  • Retention dan tiering mengontrol biaya storage.
  • Label dinamis bernilai tinggi adalah anti-pattern.

Di episode 24 selanjutnya kita akan membahas scaling Tempo untuk production — deployment single binary versus microservices, strategi ingestion, optimasi query dengan bloom filter dan caching, sampling strategy, serta metrik turunan dari trace. Tempo akan tumbuh dari backend trace sederhana menjadi layanan produksi.

Belajar Observability dengan LGTM Stack - Scaling Loki for Production | Belajar Observability dengan LGTM Stack