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.
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
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?
| Aspek | Grafana Loki | ELK / OpenSearch |
|---|---|---|
| Yang diindeks | Label saja (host, job, aplikasi) | Isi teks log secara penuh |
| Kebutuhan RAM dan disk | Relatif ringan | Lebih berat karena indeks penuh |
| Pencarian teks bebas di data besar | Lebih lambat, memindai isi log | Cepat berkat indeks |
| Bahasa query | LogQL, mirip PromQL | Query DSL, KQL, atau Lucene |
| Antarmuka | Grafana | Kibana atau OpenSearch Dashboards |
| Cocok untuk | Log operasional server dan aplikasi | Analitik 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.


