Memantau Log Server dengan Journalctl dan Logrotate di Debian 13

Pendahuluan

Saat bot mati atau website error 502, hal pertama yang diperiksa adalah log. Debian 13 memakai systemd sehingga hampir semua layanan mencatat ke jurnal terpusat yang dibaca lewat journalctl. Sementara file log klasik di /var/log dikelola oleh logrotate agar tidak memenuhi disk. Artikel ini membahas cara memantau keduanya secara praktis.

Bagian 1: Journalctl untuk Layanan Systemd

Menampilkan log layanan bot atau API:

bash
journalctl -u bot-telegram -f
journalctl -u api-sederhana --since "1 hour ago"

Opsi yang sering dipakai:

bash
journalctl -u nginx --no-pager -n 100
journalctl -u caddy -p err --since today
journalctl --disk-usage

Penjelasan:

  • -f — ikuti log secara live seperti tail -f.
  • -n 100 — tampilkan 100 baris terakhir.
  • -p err — hanya level error ke atas.
  • --since today — filter sejak hari ini.

Melihat semua log boot terakhir:

bash
journalctl -b -p warning

Mencari kata kunci:

bash
journalctl -u bot-telegram | grep -i "error\|timeout\|ECONNREFUSED"

Bagian 2: Log File Klasik di /var/log

Selain jurnal systemd, banyak aplikasi menulis ke file:

bash
ls -lh /var/log/
tail -f /var/log/syslog
tail -f /var/log/nginx/error.log

Contoh memantau cron:

bash
grep CRON /var/log/syslog | tail -n 50

Bagian 3: Konfigurasi Logrotate

Tanpa rotasi, file seperti /var/log/backup-bot.log bisa membesar hingga gigabyte. Logrotate memotong, mengompres, dan menghapus log lama otomatis.

Contoh konfigurasi /etc/logrotate.d/bot-telegram:

bash
/var/log/bot-*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  copytruncate
  dateext
}

Artinya: rotasi harian, simpan 7 hari, kompres dengan gzip, abaikan jika file belum ada.

Uji konfigurasi tanpa menunggu jadwal:

bash
sudo logrotate -d /etc/logrotate.d/bot-telegram
sudo logrotate -f /etc/logrotate.d/bot-telegram

Cek status rotasi:

bash
cat /var/lib/logrotate/status | grep bot

Contoh Nyata: Bot Telegram Mati Tiba-tiba

  1. Cek status layanan:
    bash
    sudo systemctl status bot-telegram
  2. Lihat 50 baris log terakhir:
    bash
    journalctl -u bot-telegram -n 50 --no-pager
  3. Jika ada ENOMEM atau JavaScript heap out of memory, berarti RAM habis — lihat panduan optimasi VPS Debian.
  4. Jika ada 401 Unauthorized, berarti token bot salah — periksa file .env.

Tabel Perintah Penting

KebutuhanPerintah
Live log layananjournalctl -u NAMA -f
100 baris terakhirjournalctl -u NAMA -n 100 --no-pager
Hanya error hari inijournalctl -u NAMA -p err --since today
Penggunaan disk jurnaljournalctl --disk-usage
Batasi ukuran jurnalsudo journalctl --vacuum-size=500M
Live file logtail -f /var/log/syslog

Membatasi Ukuran Jurnal Systemd

Secara bawaan jurnal bisa memakan ratusan MB. Batasi di /etc/systemd/journald.conf:

bash
SystemMaxUse=500M
RuntimeMaxUse=100M

Terapkan:

bash
sudo systemctl restart systemd-journald
sudo journalctl --vacuum-size=500M

Kelebihan dan Kekurangan

Kelebihan journalctl:

  • Terpusat untuk semua layanan systemd.
  • Bisa filter per unit, waktu, dan level.
  • Tidak perlu path file manual.

Kekurangan:

  • Log hilang jika jurnal corrupt dan belum diforward ke file.
  • Perlu logrotate terpisah untuk aplikasi yang menulis file langsung.

Kesimpulan

Kombinasi journalctl untuk layanan systemd dan logrotate untuk file log adalah standar monitoring VPS Debian 13. Biasakan mengecek log sebelum restart layanan, batasi ukuran jurnal, dan simpan log penting minimal 7 hari agar troubleshooting lebih cepat.

Artikel Terkait