Belajar Observability dengan LGTM Stack - Grafana Alloy Advanced Features
Episode 17 of 36

Belajar Observability dengan LGTM Stack - Grafana Alloy Advanced Features

Grafana Alloy menawarkan fitur lanjutan untuk pipeline telemetry yang dinamis. Episode ini membahas perbandingan Alloy dengan OTel Collector, bahasa River lebih dalam, komponen discovery dan relabeling, serta mode clustering untuk high availability dan distribusi target.

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

Pendahuluan

Di episode 11 kalian memakai Grafana Alloy untuk mengumpulkan log. Namun Alloy jauh lebih dari sekadar pembaca file — ia adalah collector general-purpose yang menangani metrik, log, dan trace sekaligus, dengan bahasa konfigurasi River yang bisa diprogram.

Episode ini membahas kapan memakai Alloy dan kapan memakai OpenTelemetry Collector, eksplorasi bahasa River lebih dalam, komponen discovery dan relabeling untuk service discovery, serta mode clustering yang membuat Alloy berjalan high availability.

Alloy vs OpenTelemetry Collector

Kapan Memakai Masing-masing

  • Gunakan Alloy saat: kalian sudah di ekosistem Grafana, butuh konfigurasi dinamis yang mudah diprogram, dan ingin satu binary untuk semua sinyal.
  • Gunakan OTel Collector saat: kalian ingin konformasi penuh terhadap ekosistem OTel, butuh ekosistem receiver dan processor terbesar, atau tim sudah terbiasa dengan konfigurasi YAML OTel.
  • Complementary usage: keduanya sering dipakai bersama — Alloy sebagai collector edge, OTel Collector sebagai gateway terpusat.
Strategi pemakaian keduanya
alloy (edge) -> otel collector (gateway) -> backend

Pola alloy (edge) -> otel collector (gateway) adalah kombinasi yang paling umum di deployment campuran.

Jalur Migrasi

Konfigurasi Grafana Agent lama bisa dikonversi ke Alloy dengan tool alloy convert. Dari sisi OTel, sebagian besar komponen memiliki padanan, sehingga migrasi umumnya bertahap.

Bahasa River

Sintaks Dasar dan Komponen

River adalah bahasa yang berorientasi komponen:

  • Component blocks: komponen "nama" "label" diikuti atribut di dalam kurung kurawal.
  • Variabel dan expression: mendukung nilai bertipe seperti list, map, dan fungsi.
  • Flow control: alur data dihubungkan dengan operator panah ->.
Variabel dan expression di River
endpoint = "http://loki:3100/loki/api/v1/push"
 
loki.write "default" {
  endpoint {
    url = endpoint
  }
  external_labels = {
    env = "dev",
  }
}

Ekspresi endpoint = "..." memperlihatkan bahwa atribut bisa memakai variabel — membuat konfigurasi Alloy dapat diprogram layaknya kode.

Komponen Lanjutan

  • Discovery components: discovery.kubernetes, discovery.docker, dan discovery.relabel untuk menemukan target.
  • Relabeling: menulis ulang label target scraping.
  • Remote write: mengirim metrik dengan prometheus.remote_write.
  • OTLP receivers dan exporters: otelcol.receiver.otlp dan otelcol.exporter.otlp.
Discovery dan relabeling
discovery.docker "nodes" {
  host = env("DOCKER_HOST")
}
 
discovery.relabel "keep_web" {
  targets = discovery.docker.nodes.targets
  rule {
    source_labels = ["__meta_docker_container_name"]
    regex         = "web-.*"
    action        = "keep"
  }
}

Aturan discovery.relabel memfilter target hanya container yang namanya diawali web- — pola khas service discovery di produksi.

Alloy Clustering

Mode Terdistribusi

Alloy mendukung clustering untuk skala horizontal:

  • Distributed mode: beberapa instance Alloy membentuk cluster dan saling berbagi target.
  • Target allocation: target scraping didistribusikan antar node cluster.
  • High availability: jika satu node mati, target dialihkan ke node lain.
  • State sharing: anggota cluster berbagi informasi lewat gossip protocol.
Konsep konfigurasi cluster
cluster:
  enabled: true
  name: logs-cluster
  join_peers:
    - alloy-1:12345

Konfigurasi cluster.enabled: true menyalakan mode cluster; join_peers menghubungkan instance ke anggota cluster yang sudah ada.

Tip

Clustering berguna saat koleksi log atau scraping melebihi kapasitas satu node. Mulai dari target allocation sederhana, lalu perbesar node seiring pertumbuhan beban.

Penutup

Di episode 17 ini kalian memahami posisi Alloy versus OpenTelemetry Collector dan strategi memakainya secara komplementer, mendalami bahasa River dengan variabel dan expression, komponen discovery dan relabeling, serta mode clustering untuk high availability dan distribusi target.

Inti yang harus dibawa pulang:

  • Alloy untuk edge collection, OTel Collector untuk gateway.
  • River memungkinkan konfigurasi diprogram dengan variabel.
  • Discovery dan relabeling mengotomatiskan service discovery.
  • Clustering mendistribusikan target dan menjaga availability.
  • Kombinasi kedua collector sering menjadi arsitektur produksi.

Di episode 18 selanjutnya kita akan membahas korelasi antar pillars — menghubungkan metrik dengan trace lewat exemplar, log dengan trace lewat TraceID, dan trace kembali ke log, hingga alur debugging terpadu alert → metrik → trace → log. Inilah keunggulan utama LGTM Stack yang membedakannya dari kumpulan tool biasa.

Belajar Observability dengan LGTM Stack - Grafana Alloy Advanced Features | Belajar Observability dengan LGTM Stack