Belajar LXC - Monitoring & Logging
Series/Belajar LXC/Episode 20
Episode 20 of 23

Belajar LXC - Monitoring & Logging

Episode ini membangun observability untuk container: status runtime dengan lxc-info, pemantauan resource via cgroup, integrasi Prometheus (node_exporter per container) dan Zabbix, serta log LXC di /var/log/lxc/, journal per container, dan log boot.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Container kalian sudah banyak, dan "banyak" berarti butuh mata yang terus menonton. Di episode 20 kita membangun observability: melihat status runtime, memantau resource per container, menghubungkan ke sistem monitoring populer (Prometheus/Zabbix), dan membaca log dengan benar. Tanpa ini, kalian hanya akan tahu container bermasalah setelah user yang melapor.

Monitoring Status dengan lxc-info

Status Runtime

Perintah paling cepat untuk melihat keadaan container:

Status dan detail runtime
lxc-info -n c1
lxc-ls -f

lxc-info -n c1 -s menampilkan ringkasan state secara ringkas — berguna dalam skrip:

Cek state saja (untuk scripting)
lxc-info -n c1 -s

Pola Polling State

Untuk skrip monitor sederhana:

Cek apakah container berjalan
if [ "$(lxc-info -n c1 -s | awk '{print $2}')" = "RUNNING" ]; then
  echo "c1 UP"
else
  echo "c1 DOWN"
fi

Monitoring Resource via cgroup

Angka resource sejati ada di cgroup (episode 7). Baca langsung untuk nilai akurat:

Baca penggunaan resource dari cgroup
cat /sys/fs/cgroup/lxc/c1/memory.current
cat /sys/fs/cgroup/lxc/c1/memory.max
cat /sys/fs/cgroup/lxc/c1/cpu.max
Pemantauan interaktif
systemd-cgtop

systemd-cgtop menampilkan penggunaan CPU/memory tiap cgroup secara live — alat tercepat untuk menemukan container yang "makan" resource.

Tip

Cara paling akurat mengukur "container yang sudah melampaui limit" adalah membandingkan memory.current vs memory.max, dan melihat apakah memory.events mencatat oom_kill. Angka oom_kill yang naik adalah tanda pasti proses di dalam container dibunuh karena memory limit (episode 7).

Integrasi Prometheus

Strategi node_exporter per Container

Cara paling sederhana memonitor container dengan Prometheus: jalankan node_exporter di dalam setiap container, lalu minta Prometheus melakukan scrape ke IP masing-masing. Container yang memakai systemd bisa menjalankannya sebagai service biasa.

Jalankan node_exporter di dalam container
lxc-attach -n c1 -- apt install prometheus-node-exporter
lxc-attach -n c1 -- systemctl enable --now prometheus-node-exporter

Konfigurasi Scrape di Prometheus

prometheus.yml (target container)
scrape_configs:
  - job_name: "lxc-containers"
    static_configs:
      - targets:
          - "10.0.3.10:9100"   # c1
          - "10.0.3.11:9100"   # c2
        labels:
          group: "homelab"

Metrik yang Berguna

  • node_memory_MemAvailable_bytes vs limit container.
  • node_cpu_seconds_total untuk pola beban.
  • node_filesystem_avail_bytes untuk disk dalam container.

Alternatif: blackbox/host-side

Jika tidak ingin menaruh agent di tiap container, scrape dari host lewat metrik cgroup (menggunakan exporter kustom atau node_exporter dengan --collector.cgroups). Kurang detail, tapi lebih ringan — pilih sesuai kebutuhan.

Integrasi Zabbix

Zabbix menawarkan pendekatan agent-based serupa: install Zabbix agent di dalam container, tambahkan host di Zabbix, dan pantau metrik standar OS. Untuk monitoring LXC dari sisi host, Zabbix juga bisa memakai item kustom yang menjalankan lxc-info atau membaca file cgroup.

Item Zabbix kustom untuk state container
lxc-info -n c1 -s

Kombinasikan dengan trigger alert: "container DOWN", "memory > 90% limit", atau "oom_kill > 0" — ini yang membuat monitoring berguna, bukan sekadar dashboard yang indah.

Logging

Log Runtime LXC

LXC menulis log operasional di /var/log/lxc/:

Lihat log LXC
ls /var/log/lxc/
tail -50 /var/log/lxc/c1.log

Log ini berisi jejak operasi lxc-start, lxc-stop, dan kesalahan konfigurasi — baris pertama yang dibaca saat container gagal start.

Journal per Container

Untuk container systemd, log service di dalam container tersimpan di journal-nya sendiri. Dari host, kalian bisa membaca langsung:

Baca journal service di dalam container
lxc-attach -n c1 -- journalctl -u sshd --no-pager -n 50
Semua log sejak boot container
lxc-attach -n c1 -- journalctl -b

Log Boot Container

Log boot container (boot log dari init) bisa dilihat lewat console atau lxc-info:

Log boot dari console
lxc-console -n c1

Tekan Ctrl+A lalu Q untuk keluar dari console kembali ke host.

Warning

Log runtime LXC (/var/log/lxc/) dan journal container adalah hal yang berbeda: yang pertama tentang operasi LXC itu sendiri (start/stop/config), yang kedua tentang service di dalam container. Saat "container gagal start", baca dulu /var/log/lxc/c1.log; saat "service di dalam container bermasalah", baca journal container.

Membuat Dashboard Sederhana

Pola minimum yang bisa diandalkan:

  • Alert state container berubah ke STOPPED.
  • Alert memory.current melewati 90% memory.max.
  • Alert oom_kill bertambah.
  • Log dikirim ke sistem terpusat (misal journald host, lalu forward).
Cek memory dan oom event
cat /sys/fs/cgroup/lxc/c1/memory.events

Penutup

Inti yang harus dibawa pulang:

  • lxc-info -n c1 -s dan lxc-ls -f adalah status check tercepat.
  • Resource akurat dibaca dari cgroup; systemd-cgtop untuk live view.
  • Prometheus: jalankan node_exporter per container dan scrape per IP.
  • Zabbix: agent di dalam container atau item kustom berbasis lxc-info.
  • Log: /var/log/lxc/ untuk operasi LXC, journal per container untuk service, lxc-console untuk boot log.

Di episode 21 selanjutnya kita akan membahas roadmap & community — arah pengembangan LXC (kernel terbaru, cgroup2, keamanan, koordinasi LTS 7.0 hingga 2031) dan kanal komunitas: linuxcontainers.org, GitHub lxc/lxc, forum discuss.linuxcontainers.org, serta IRC #lxc.

Belajar LXC - Monitoring & Logging | Belajar LXC