Ketika ada laporan error pada aplikasi, kita harus masuk ke server satu per satu, membuka terminal, dan menjalankan tail -f. Cara ini tidak scalable dan menghambat proses Root Cause Analysis (RCA).
Dalam artikel ini, saya mendokumentasikan implementasi Centralized Logging menggunakan PLG Stack (Promtail, Loki, Grafana). Solusi ini memungkinkan pengumpulan log dari sistem operasi (Linux) dan container (Docker) ke dalam satu dashboard terpadu.
Arsitektur Sistem
-
Loki (Server): “Gudang” penyimpanan log yang ringan (diinstall di VPS Monitoring).
-
Promtail (Agent): “Kurir” yang membaca & mengirim log (diinstall di VPS Target Aplikasi).
-
Grafana (UI): Antarmuka visual untuk query dan analisis log.
Instalasi Loki
Loki saya install menggunakan systemd untuk performa yang lebih stabil dan manajemen resource yang terukur di level OS.
Download & Install Binary:
# Download versi stabil cd /tmp wget https://github.com/grafana/loki/releases/download/v2.9.2/loki-linux-amd64.zip unzip loki-linux-amd64.zip # Pindahkan ke path eksekusi sudo mv loki-linux-amd64 /usr/local/bin/loki sudo chmod a+x /usr/local/bin/loki
Konfigurasi Loki:
Membuat file /etc/loki/config.yml dengan konfigurasi penyimpanan lokal (filesystem) yang efisien.
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
Membuat Service Systemd:
Agar Loki berjalan otomatis saat booting dan mudah di-manage (start, stop, restart).
Buat konfigurasi untuk service systemd loki, buat file /etc/systemd/system/loki.service
[Unit] Description=Loki Log Aggregator After=network.target [Service] ExecStart=/usr/local/bin/loki -config.file=/etc/loki/config.yml Restart=always [Install] WantedBy=multi-user.target
Enable service Loki dengan command berikut:
sudo systemctl enable --now loki
Instalasi Promtail (Di VPS Target Aplikasi)
Promtail dikonfigurasi untuk membaca dua jenis log sekaligus: Log Sistem Linux (/var/log) dan Log Container Docker.
Download & Install:
cd /tmp wget https://github.com/grafana/loki/releases/download/v2.9.2/promtail-linux-amd64.zip unzip promtail-linux-amd64.zip
Konfigurasi Promtail:
Membuat file /etc/promtail/config.yml. Bagian terpenting adalah scrape_configs yang mendefinisikan sumber log.
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://IP_VPS_MONITORING:3100/loki/api/v1/push
scrape_configs:
# Job 1: Log Sistem Operasi (Syslog/Auth)
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: system
host: vps-app-01
__path__: /var/log/*.log
# Job 2: Log Docker Container (WordPress/MySQL)
- job_name: docker
static_configs:
- targets:
- localhost
labels:
job: docker
host: vps-app-01
__path__: /var/lib/docker/containers/*/*-json.log
Enable service promtail dengan command berikut:
sudo systemctl enable --now promtail
Integrasi & Visualisasi di Grafana
Setelah data mengalir, langkah terakhir adalah visualisasi.
-
Add Data Source: Pilih Loki dan masukkan URL
http://localhost:3100(jika Grafana satu server dengan Loki). -
Validasi Data (LogQL): Menggunakan fitur Explore di Grafana untuk memvalidasi log yang masuk.
-
Melihat semua log Docker:
{job="docker"} -
Filter Error Spesifik:
{job="docker"} |= "error"
-
-
Membuat Dashboard: Saya membuat dashboard sederhana yang bisa digunakan untuk memonitoring Host dengan OS linux dan aplikasi yang dijalankan dengan Docker:

