Lewati ke isi

Server & Infrastruktur

Mengumpulkan Log Banyak Server dengan Grafana Loki

Cara memusatkan log dari banyak server ke Grafana Loki dengan Grafana Alloy, contoh konfigurasi, query LogQL dasar, dan perbandingannya dengan ELK.

Terbit 5 menit baca

Jawaban singkat

Grafana Loki menyimpan log dari banyak server di satu tempat dan hanya mengindeks label, sehingga lebih hemat sumber daya dibanding ELK. Log dikirim dengan Grafana Alloy, karena Promtail sudah mencapai akhir masa pakai pada 2 Maret 2026, lalu dibaca lewat Grafana dengan LogQL.

Daftar isi
  1. Bagaimana arsitektur Loki untuk tim kecil?
  2. Loki sebagai penyimpan
  3. Grafana Alloy sebagai pengirim
  4. Grafana sebagai layar
  5. Loki atau ELK, mana yang cocok?
  6. Kapan memilih Loki, kapan ELK
  7. Langkah memasang Loki dan Alloy
  8. Bagaimana mencari log dengan LogQL?
  9. Berapa lama log disimpan?
  10. Pertanyaan yang sering diajukan

Grafana Loki adalah sistem penyimpanan log yang dirancang mirip Prometheus: log dari banyak server dikirim ke satu tempat, diberi label seperti nama host dan aplikasi, lalu dicari lewat Grafana. Bedanya dengan banyak sistem log lain, Loki tidak mengindeks isi teks log, hanya labelnya. Itulah yang membuatnya ringan.

Kenapa pilihan ini penting? Kalau log masih tersebar di lima server, setiap insiden berarti membuka lima sesi SSH dan menebak jam kejadian di setiap mesin. Sebaliknya, kalau memilih sistem log yang terlalu berat, servernya sendiri bisa menghabiskan biaya lebih besar dari aplikasi yang dipantau.

Bagaimana arsitektur Loki untuk tim kecil?

Untuk tim kecil sampai menengah, susunannya cukup tiga bagian.

Loki sebagai penyimpan

Loki bisa berjalan dalam mode monolitik, yaitu satu proses yang menjalankan semua komponen. Mode ini cocok untuk satu VPS khusus log. Penyimpanannya bisa disk lokal atau object storage yang kompatibel S3 bila volumenya besar.

Grafana Alloy sebagai pengirim

Di setiap server sumber, sebuah agen membaca file log atau journal systemd lalu mengirimkannya ke Loki. Dulu tugas ini dipegang Promtail. Menurut dokumentasi resmi Grafana, Promtail sudah deprecated sejak Loki 3.4, masa dukungan jangka panjangnya berakhir 28 Februari 2026, dan statusnya end-of-life sejak 2 Maret 2026. Penggantinya adalah Grafana Alloy.

Kalau kamu masih punya konfigurasi Promtail, Alloy menyediakan perintah konversi alloy convert --source-format=promtail. Perlu dicatat, nama metrik Alloy berbeda dari Promtail, jadi dashboard dan alert yang membaca metrik agen harus disesuaikan.

Grafana sebagai layar

Grafana menambahkan Loki sebagai data source, lalu kamu bisa menjelajah log di menu Explore, membuat panel, atau memasang alert. Kalau Grafana sudah dipakai untuk metrik, misalnya dari Prometheus dan Node Exporter, log dan grafik bisa ditampilkan berdampingan.

Loki atau ELK, mana yang cocok?

AspekGrafana LokiELK / OpenSearch
Yang diindeksLabel saja (host, job, aplikasi)Isi teks log secara penuh
Kebutuhan RAM dan diskRelatif ringanLebih berat karena indeks penuh
Pencarian teks bebas di data besarLebih lambat, memindai isi logCepat berkat indeks
Bahasa queryLogQL, mirip PromQLQuery DSL, KQL, atau Lucene
AntarmukaGrafanaKibana atau OpenSearch Dashboards
Cocok untukLog operasional server dan aplikasiAnalitik log, keamanan, pencarian intensif

Kapan memilih Loki, kapan ELK

Pilih Loki kalau kebutuhan utamamu melacak masalah: "apa yang terjadi di server web jam 14.05?" atau "berapa banyak error 500 dari aplikasi ini sejam terakhir?". Pertanyaan seperti ini selalu dimulai dari label host atau aplikasi, dan di situ Loki unggul.

Pilih ELK atau OpenSearch kalau tim sering mencari kata acak di seluruh log tanpa tahu sumbernya, membangun analitik kompleks, atau menjalankan analisis keamanan yang berat. Biayanya lebih tinggi, tapi pencarian teks bebasnya memang lebih kuat.

Untuk satu atau dua server, kadang keduanya berlebihan. Membaca log dengan journalctl dan logrotate yang rapi masih cukup.

Langkah memasang Loki dan Alloy

Di server pusat log, cara tercepat adalah Docker. Dokumentasi Loki per November 2026 memakai image grafana/loki:3.7.0 dengan file konfigurasi contoh:

wget https://raw.githubusercontent.com/grafana/loki/v3.7.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml
docker run --name loki -d -v $(pwd):/mnt/config -p 127.0.0.1:3100:3100 \
  grafana/loki:3.7.0 -config.file=/mnt/config/loki-config.yaml

Contoh resmi memakai -p 3100:3100. Di atas sengaja dibatasi ke localhost. Buka port 3100 hanya untuk IP server sumber lewat jaringan privat atau firewall, karena konfigurasi contoh tidak memakai autentikasi.

Di setiap server sumber, pasang Alloy dari repository resmi Grafana, lalu isi /etc/alloy/config.alloy:

local.file_match "aplikasi" {
  path_targets = [{"__path__" = "/var/log/nginx/*.log", "job" = "nginx", "host" = "web01"}]
}

loki.source.file "aplikasi" {
  targets    = local.file_match.aplikasi.targets
  forward_to = [loki.write.pusat.receiver]
}

loki.source.journal "systemd" {
  forward_to = [loki.write.pusat.receiver]
  labels     = {"job" = "journal", "host" = "web01"}
}

loki.write "pusat" {
  endpoint {
    url = "http://10.0.0.5:3100/loki/api/v1/push"
  }
}

Restart Alloy dengan sudo systemctl restart alloy. Pastikan user alloy punya izin membaca file log yang dituju, misalnya dengan menambahkannya ke grup yang memiliki file itu.

Bagaimana mencari log dengan LogQL?

{job="nginx", host="web01"} |= "error"
sum by (host) (count_over_time({job="nginx"} |= " 500 " [5m]))

Baris pertama menampilkan log Nginx dari web01 yang mengandung kata error. Baris kedua menghitung jumlah baris berisi " 500 " per host dalam jendela lima menit, yang bisa dijadikan grafik atau dasar alert.

Berapa lama log disimpan?

Secara bawaan Loki tidak menghapus log lama. Retensi diaktifkan lewat compactor:

compactor:
  working_directory: /tmp/loki/retention
  retention_enabled: true
  delete_request_store: filesystem

limits_config:
  retention_period: 720h

Konfigurasi contoh sudah punya blok limits_config, jadi tambahkan retention_period ke blok itu, jangan membuat blok kedua. Sesuaikan working_directory dengan path_prefix di konfigurasimu. Konfigurasi contoh menyimpan data di /tmp/loki di dalam container, jadi untuk pemakaian sungguhan petakan folder itu ke volume agar log tidak hilang saat container dibuat ulang. Dokumentasi Loki menyebut delete_request_store wajib diisi saat retensi aktif, dan retensi membutuhkan periode indeks 24 jam di schema_config. Nilai 720h berarti 30 hari. Sesuaikan dengan kebutuhan audit dan kapasitas disk.

Pertanyaan yang sering diajukan

Apakah Promtail masih bisa dipakai?

Programnya masih bisa berjalan, tapi sejak 2 Maret 2026 Promtail berstatus end-of-life dan tidak menerima pembaruan lagi, termasuk perbaikan keamanan. Sebaiknya pindah ke Grafana Alloy.

Butuh server khusus untuk Loki?

Untuk beberapa server sumber dengan volume log sedang, satu VPS khusus sudah cukup. Memisahkannya dari server aplikasi mencegah log ikut hilang saat server aplikasi bermasalah.

Bisakah Loki menerima log dari container Docker?

Bisa. Alloy punya komponen untuk membaca log container Docker, atau kamu bisa membaca file log container dari host.

Apakah log di Loki bisa dipakai sebagai bukti audit?

Bisa sebagai bagian dari jejak audit, asalkan akses ke Loki dibatasi, retensi sesuai kebijakan, dan jam semua server tersinkron agar urutan kejadian akurat.

Sumber & referensi

Baca juga