Log systemd: journalctl dalam bahasa sederhana
Cara menemukan penyebab kegagalan layanan di log, memfilter yang Anda butuhkan berdasarkan waktu dan level, serta mencegah log menghabiskan seluruh disk.
Diperbarui 23 Agustus 2026
Hampir semua yang terjadi di sistem berakhir di jurnal systemd. Layanan tidak mau start, mesin reboot sendiri, situs mengembalikan 502 — jawabannya biasanya sudah tercatat, Anda hanya perlu tahu cara menanyakannya.
Lima perintah yang cukup
journalctl -u nginx -n 50 --no-pager # last 50 lines of one service
journalctl -u nginx -f # follow in real time
journalctl -p err -b # only errors since boot
journalctl --since "10 min ago" # everything for the last ten minutes
journalctl -b -1 -e # previous boot log, end of file
Yang terakhir sangat berguna setelah reboot mendadak: -b -1 membuka sesi sebelumnya, dan di bagian akhir Anda bisa melihat apakah itu kernel panic, OOM killer yang bekerja, atau shutdown yang bersih.
Level pada -p: emerg, alert, crit, err, warning, notice, info, debug. Level yang ditentukan mencakup semua level yang lebih penting.
Mendiagnosis layanan yang gagal
systemctl status myapp
journalctl -u myapp --since today -p warning
systemctl status memberikan exit code dan baris-baris terakhir, journalctl memberikan gambaran lengkap. Perhatikan:
Main process exited, code=exited, status=1— aplikasi keluar dengan error sendiri, penyebabnya ada di baris di atasnya;Failed to start ... Permission denied— izin pada file, direktori, atau port di bawah 1024;Killed process ... (java) total-vm...dari kernel — OOM killer aktif, baca Kehabisan memori;Start request repeated too quickly— layanan mengalami crash-loop, systemd berhenti menjalankannya; perbaiki penyebabnya dan jalankansystemctl reset-failed myapp.
Daftar semua yang rusak di sistem adalah systemctl --failed.
Filter yang menghemat waktu
journalctl --since "2026-08-22 03:00" --until "2026-08-22 04:00"
journalctl -u nginx -u php-fpm # several services at once
journalctl _PID=1432 # by specific process
journalctl -k # only kernel messages
journalctl -u sshd | grep "Failed password" | tail -20
Kombinasikan dengan grep, tetapi ingat: journalctl tanpa --no-pager membuka pager, keluar dengan q.
Mencegah jurnal menghabiskan disk
Secara default, jurnal tumbuh hingga 10% dari partisi. Pada VDS-1 dengan disk 40 GB, itu berarti empat gigabyte — cukup terasa.
journalctl --disk-usage
journalctl --vacuum-size=200M
journalctl --vacuum-time=14d
Batas permanen ada di /etc/systemd/journald.conf:
[Journal]
SystemMaxUse=300M
MaxRetentionSec=1month
Lalu systemctl restart systemd-journald.
Kesalahan umum
- Membaca jurnal tanpa
-u. Aliran umum penuh dengan catatan layanan, dan baris yang Anda butuhkan hilang. Selalu persempit ke layanan atau level tertentu. - Kehilangan riwayat setelah reboot. Jika direktori
/var/log/journaltidak ada, jurnal hanya hidup di memori. Buat direktori tersebut:mkdir -p /var/log/journal && systemd-tmpfiles --create --prefix /var/log/journal. - Mencari error aplikasi di sana. Nginx, PostgreSQL, dan sejenisnya juga menulis ke file mereka sendiri di
/var/log. Jika jurnal kosong, periksa di sana.
Saat disk penuh, journalctl mungkin menolak bekerja sampai ruang dibebaskan. Situasi ini dibahas dalam artikel Kehabisan ruang disk.