Belajar Observability dengan LGTM Stack - Scaling Mimir for Production
Episode 22 of 36

Belajar Observability dengan LGTM Stack - Scaling Mimir for Production

Mimir lahir untuk skala besar — tetapi scaling butuh perencanaan. Episode ini membahas capacity planning, scaling horizontal tiap komponen, high availability dengan replikasi dan zone-aware, performance tuning, serta konfigurasi object storage untuk produksi.

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

Pendahuluan

Di episode 6 kalian menjalankan Mimir sebagai single binary untuk pengembangan. Di produksi, beban jauh lebih berat: jutaan deret waktu, ribuan query per detik, dan tuntutan ketersediaan tinggi. Di sinilah arsitektur modular Mimir menunjukkan tujuannya.

Episode ini membahas langkah menuju Mimir produksi: capacity planning, scaling horizontal komponen, desain high availability, performance tuning, serta konfigurasi object storage yang tepat.

Capacity Planning

Estimasi Kebutuhan

Sebelum menambah instance, hitung dulu beban yang harus ditanggung:

  • Metric cardinality estimation: jumlah deret waktu = metrik dikali kombinasi label. Waspadai metrik dengan label tinggi.
  • Ingestion rate calculations: sampel per detik yang masuk memakai rumus deret waktu dibagi scrape interval.
  • Query load estimation: jumlah query per detik dan beban range di dashboard.
  • Storage requirements: estimasi berdasarkan jumlah sampel dan ukuran per sampel.
Rumus sederhana kapasitas
sampel/detik = deret-waktu / scrape-interval
storage/hari  = sampel/detik * 24 * 3600 * ukuran-sampel

Rumus sampel/detik = deret-waktu / scrape-interval menjadi titik awal semua perhitungan kapasitas Mimir.

Horizontal Scaling

Komponen yang Diskalakan

Masing-masing komponen diskalakan sesuai perannya:

  • Distributor: stateless — mudah diperbanyak; beban didistribusikan lewat load balancer.
  • Ingester: stateful — data dalam memori; replikasi diatur dengan replication factor.
  • Querier: stateless — diperbanyak untuk menangani beban query.
  • Store-gateway: memperluas cache dan akses ke blok object storage.
Konsep replication factor
ingester:
  replication_factor: 3

Nilai replication_factor: 3 berarti setiap deret waktu ditulis ke tiga ingester berbeda — jika satu mati, data tetap tersedia.

High Availability

Zone-Aware Replication

Distribusi replika ke zona berbeda melindungi dari kegagalan satu zona:

  • Replication factor: minimal 3 untuk toleransi satu kegagalan.
  • Zone-aware replication: replika disebar ke zona yang berbeda.
  • Consistency guarantees: Mimir memakai mekanisme quorum saat membaca dan menulis.
  • Failure scenarios: rencanakan apa yang terjadi saat distributor, ingester, atau storage gagal.
Zone-aware di Mimir
zone-aware-replication:
  enabled: true

Aktifkan zone-aware-replication: true dan distribusikan ingester ke minimal tiga zone untuk melindungi dari kegagalan zona.

Performance Tuning

Optimasi Ingestion dan Query

  • Ingestion optimization: perbesar batch dan proses paralel di distributor.
  • Query optimization: mulai query dengan selector label ketat, gunakan recording rules.
  • Compaction tuning: atur interval compaction agar jumlah blok tetap wajar.
  • Caching strategies: gunakan cache untuk query-frontend dan store-gateway.

Info

Aturan praktis scaling: tambah distributor bila ingest lambat, tambah querier bila query lambat, dan perbesar cache bila keduanya masih kurang. Ukur dulu dengan dashboard Mimir, jangan menebak.

Konfigurasi Object Storage

S3/GCS/Azure Blob

Untuk produksi, ganti filesystem dengan object storage:

Konfigurasi S3 di Mimir
blocks_storage:
  backend: s3
  s3:
    endpoint: s3.amazonaws.com
    bucket_name: mimir-blocks
    access_key_id: ${AWS_ACCESS_KEY_ID}
    secret_access_key: ${AWS_SECRET_ACCESS_KEY}

Blok s3: bucket_name: mimir-blocks memindahkan penyimpanan blok dari disk lokal ke S3 — prasyarat scaling dan retention panjang.

Lifecycle dan Biaya

  • Lifecycle policies: atur transisi blok ke storage dingin untuk data lama.
  • Cost optimization: pilih kelas storage sesuai akses — panas untuk baru, dingin untuk lama.
  • Access patterns: blok jarang diakses diakses kembali saat query range lama.

Penutup

Di episode 22 ini kalian memahami capacity planning dengan perhitungan sampel dan deret waktu, scaling horizontal komponen Mimir, desain high availability dengan replikasi dan zone-aware, performance tuning, serta konfigurasi object storage untuk produksi.

Inti yang harus dibawa pulang:

  • Hitung kapasitas dulu sebelum menambah instance.
  • Ingester stateful butuh replikasi, distributor dan querier stateless.
  • Replication factor 3 dengan zone-aware melindungi dari kegagalan.
  • Ukur dashboard sebelum menambah resource.
  • Object storage adalah prasyarat scaling dan retention.

Di episode 23 selanjutnya kita akan membahas scaling Loki untuk production — mode deployment monolithic, simple scalable, dan microservices, strategi scaling ingestion dan query, manajemen index TSDB dan BoltDB, optimasi storage, serta desain label yang sehat. Loki di production menuntut disiplin yang sama dengan Mimir.

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