Pendahuluan
Systemd mencatat semua pesan Linux dari kernel dan proses sistem. Perintah journalctl memungkinkan melihat dan mengedit log systemd, menjadikannya alat yang ampuh untuk debug layanan dan proses.
Panduan ini menunjukkan cara membaca, mengontrol, dan memelihara log systemd menggunakan journalctl melalui contoh.
Prasyarat
- Akses ke baris perintah/jendela terminal.
- Editor teks (seperti nano) untuk mengedit file konfigurasi.
- Pengguna dengan hak istimewa sudo (lihat cara menambahkan pengguna ke sudoers).
Apa itu Systemd?
Systemd adalah layanan Linux dan manajer sistem. Meskipun pengguna tidak memanggil systemd secara langsung, manajer berisi banyak alat dan daemon untuk dijalankan secara individual untuk berbagai proses sistem.
Salah satu fungsi systemd yang paling kuat adalah fitur logging. Systemd menyediakan solusi terpusat untuk mencatat semua proses kernel dan pengguna melalui log yang dikenal sebagai jurnal .
Jurnal daemon mengumpulkan semua pesan yang dihasilkan sistem dan kemudian membuat jurnal, terlepas dari program atau prosesnya. Daemon mengumpulkan data dari semua sumber daya sistem yang tersedia dan menyimpannya dalam format biner.
Catatan: Format biner memungkinkan manipulasi output agar sesuai dengan kebutuhan Anda, memberikan lebih banyak fleksibilitas daripada file log Linux tradisional.
Sintaks journalctl
journalctl
perintah query dan memanipulasi data jurnal yang dikumpulkan oleh jurnal daemon. Alat ini sangat penting untuk administrator sistem dan melengkapi alat logging Linux lainnya dan solusi perangkat lunak server Syslog.
Sintaks perintahnya adalah:
journalctl <options> <matches>
Tanpa parameter apa pun, journalctl
perintah menampilkan seluruh isi jurnal mulai dari entri terlama. <match>
adalah satu atau lebih argumen yang dipisahkan oleh spasi untuk memfilter bidang keluaran. Formatnya adalah "FIELD=VALUE"
.
Opsi jurnalctl
Tabel di bawah merangkum journalctl
common umum pilihan:
Opsi | Deskripsi |
---|---|
-a --all | Tampilkan semua bidang sepenuhnya, termasuk karakter yang tidak dapat dicetak. |
-f --follow | Menampilkan entri terbaru dan terus mencetak entri baru. |
--no-full | Memotong output. |
-e --pager-end | Melompat ke akhir pager. |
-n <number> --lines=<number> | Menampilkan entri terbaru yang dibatasi hingga <number> dari peristiwa. Tanpa argumen, defaultnya adalah sepuluh (10). |
-o <format> --output=<format> | Menampilkan entri jurnal dalam <format> . yang diminta . |
--utc | Menampilkan waktu dalam format Waktu Universal Terkoordinasi (UTC). |
-x --catalog | Menambahkan teks penjelasan ke log pesan jika tersedia. |
-q --quiet | Menekan pesan informatif dalam output. |
-b [<ID> or <+-offset>] --boot[=<ID> or <+-offset>] | Menampilkan log dari boot tertentu. Menghilangkan argumen akan menampilkan log boot saat ini. |
-k --dmesg | Hanya menampilkan pesan kernel. |
--list-boots | Menampilkan tabel nomor boot dan ID-nya. |
-g <regex> --grep=<regex> | Filter output sesuai dengan sintaks grep regex. |
-S <date> , -U <date> --since=<date> , --until=<date> | Menampilkan entri yang lebih baru atau lebih lama dari tanggal yang ditentukan. |
-u <unit|pattern> --unit=<unit|pattern> | Tampilkan log untuk unit systemd tertentu atau unit apa pun yang cocok dengan <pattern> . |
--disk-usage | Menghitung dan menampilkan ukuran jurnal total pada disk. |
--vaccuum-size=<size> | Membatasi ukuran file jurnal yang diarsipkan menjadi |
--vaccuum-time=<time> | Membatasi jurnal yang diarsipkan ke yang lebih baru dari |
--no-pager | Menonaktifkan pager dan menampilkannya sebagai output standar. |
Periksa journalctl
halaman manual menggunakan perintah man untuk daftar lengkap opsi.
Cara Membaca systemd
Bagian berikut menguraikan cara membaca log systemd dan menggunakan berbagai opsi tampilan untuk journalctl
memerintah. Outputnya berbeda untuk setiap mesin karena catatan untuk setiap sistem adalah unik.
Tampilkan Semua Entri Jurnal
Untuk menampilkan semua entri jurnal, gunakan journalctl
perintah tanpa opsi apa pun:
journalctl
Baris pertama dari output menunjukkan rentang waktu data log. Kolom berisi data berikut dalam urutan dari kiri ke kanan:
- Tanggal dan waktu.
- Tuan rumah.
- Sumber log.
- Masukkan pesan.
Data jurnal berisi banyak entri. Gunakan tombol panah (mirip dengan perintah less) untuk menavigasi.
Keluar dari jurnal dengan menekan q .
Tampilkan Entri Terbaru
journalctl
perintah menunjukkan entri terlama secara default. Untuk melompat ke akhir pager dan menampilkan entri terbaru, gunakan -e
pilihan:
journalctl -e
Outputnya menunjukkan 1000 entri terakhir untuk menghemat ruang.
Untuk mengontrol berapa banyak baris yang ditampilkan dalam output, gunakan -n
pilihan diikuti dengan jumlah baris. Misalnya, untuk menampilkan lima entri jurnal terbaru, gunakan:
journalctl -n 5
-e
opsi tidak diperlukan dan tersirat oleh -n
pilihan. Mengabaikan nomor menunjukkan sepuluh entri terbaru secara default.
Batasi Log ke Boot Tertentu
Untuk membatasi log ke boot saat ini, gunakan -b
tag tanpa parameter apa pun:
journalctl -b
Tanpa parameter apa pun, perintah akan menampilkan log boot saat ini.
Lompat ke boot tertentu dengan menambahkan parameter offset. Misalnya, tampilkan log boot sebelumnya dengan:
journalctl -b -1
Atau, tampilkan log boot tertua yang tersedia dengan:
journalctl -b +1
Cara alternatif untuk melihat boot tertentu adalah dengan menggunakan ID boot. Ambil ID boot menggunakan --list-boots
dengan:
journalctl --list-boots
Kolom pertama menampilkan nomor offset negatif, sedangkan kolom kedua mengambil ID boot . Salin ID dan tambahkan sebagai parameter ke perintah, misalnya:
journalctl -b cc07702b00884ec59312ece62604cac8
Output membatasi tampilan log ke instance ID yang disediakan.
Tampilkan Log Dalam Jangka Waktu Tertentu
Filter jurnal dengan menentukan batas waktu. Dua opsi untuk membatasi sejak atau hingga waktu yang ditentukan adalah:
journalctl -S <datetime>
journalctl -U <datetime>
Gunakan opsi satu per satu atau gabungkan untuk membuat jendela waktu.
Perintah mengharapkan salah satu format tanggal dan waktu berikut:
- Tanggal dan waktu tertentu, misalnya,
2022-04-30 09:20:00
. Menghilangkan default parameter waktu ke00:00:00
. - String, seperti
"yesterday"
,"today"
,"2 hours ago"
, atau"now"
.
Di bawah ini adalah contoh journalctl
perintah dengan jendela waktu tertentu:
journalctl -S 2022-04-02 -U 2022-04-22
Perintah tersebut membuat jendela waktu dari 2 April 2022 hingga 22 April 2022. Outputnya menunjukkan jurnal yang termasuk dalam jangka waktu tersebut.
Atau, gunakan pola string seperti:
journalctl -S "50 minutes ago"
Keluaran menunjukkan log dari waktu yang ditentukan hingga waktu saat ini.
Tampilkan Log Berdasarkan Unit sistem tertentu
Filter log menurut unit sistem tertentu menggunakan -u
tag dan memberikan nama unit. Misalnya, untuk memfilter hanya catatan unit layanan Jenkins, jalankan:
journalctl -u jenkins
Output menunjukkan entri jurnal yang terkait dengan unit systemd tertentu (dalam hal ini, Jenkins).
Catatan: Untuk menampilkan semua unit systemd yang sedang aktif, gunakan:
systemctl list-units
Tampilkan Pesan Kernel
Untuk hanya menampilkan pesan log jurnal kernel, gunakan -k
pilihan:
journalctl -k
Output menunjukkan pesan kernel hanya dari boot saat ini, menerapkan -b
menandai. Untuk menemukan log kernel dari sesi boot yang berbeda, tambahkan -b
tag dan cari boot tertentu.
Ikuti Log
Gunakan -f
atau --follow
tag untuk mencetak log terbaru secara terus-menerus:
journalctl -f
Output mencetak log yang dihasilkan secara real-time. Opsi ini memungkinkan pemantauan log dengan journalctl
seperti yang mereka tambahkan.
Untuk keluar dari penampil, tekan CTRL +C .
Filter Pesan Log Berdasarkan Prioritas
Filter pesan log berdasarkan prioritas menggunakan perintah berikut:
journalctl -p <number or text priority>
Prioritas berikut ada:
- Darurat -
0
atauemerg
- Peringatan -
1
ataualert
- Kritis -
2
ataucrit
- Kesalahan -
3
atauerr
- Peringatan -
4
atauwarning
- Pemberitahuan -
5
ataunotice
- Informasikan -
6
atauinfo
- Debug -
7
ataudebug
Angka yang lebih rendah menunjukkan pesan dengan prioritas tertinggi. Menentukan prioritas tingkat tunggal juga menampilkan semua log nomor prioritas yang lebih rendah (lebih penting).
Misalnya, untuk menampilkan peringatan, gunakan:
journalctl -p 1
Atau sebagai alternatif:
journalctl -p alert
Outputnya hanya menampilkan pesan pada level waspada dan pesan yang lebih penting (jika ada).
Filter Pesan Log Berdasarkan Pengguna Tertentu
Untuk melihat log pengguna, ambil ID pengguna (UID) dengan:
id <user>
Untuk mengambil ID pengguna saat ini, hilangkan <user>
. Output menunjukkan nilai UID untuk pengguna yang diberikan. Gunakan bidang jurnal UID untuk memfilter pesan log berdasarkan pengguna tertentu:
journalctl _UID=<UID>
Output memfilter log jurnal berdasarkan ID pengguna yang ditentukan.
Catatan: Untuk daftar lengkap bidang, periksa systemd.journal-fields
halaman manual:
man systemd.journal-fields
Cara Mengedit Keluaran Log systemd
Aspek penting dalam bekerja dengan log sebagai administrator sistem adalah memformat keluaran log. Systemd menawarkan banyak metode untuk memanipulasi hasil visual dan mengambil data dalam format yang diinginkan.
Di bawah ini adalah beberapa opsi dan contoh pengeditan keluaran standar.
Keluaran ke Keluaran Standar
journalctl
perintah menampilkan output menggunakan pager. Nonaktifkan pager dengan:
journalctl --no-pager
Output yang dihasilkan adalah output standar (stdout). Gunakan opsi ini saat mengurai data log dengan alat pengeditan teks atau skrip Bash.
Memotong atau Memperluas Output
journalctl
pager menunjukkan acara jurnal yang diperluas dalam output. Menekan tombol kanan dan tombol panah kiri membantu menavigasi teks yang tidak sesuai dengan ukuran layar.
Untuk membatasi potong journalctl
keluaran, gunakan --no-full
pilihan:
journalctl --no-full
Output membatasi garis ke ukuran layar, menambahkan elipsis (...
) untuk menunjukkan tampilan yang terpotong.
Format Keluaran
journalctl
perintah menawarkan berbagai pilihan untuk format output. Sintaks untuk format output adalah:
journalctl -o <output format>
Beberapa format yang tersedia antara lain:
cat
- Hanya menampilkan kolom pesan.export
- Output format biner, cocok untuk backup.short
- Menghasilkan output yang mirip dengan file Syslog klasik.short-precise
- Menampilkan waktu dengan mikrodetik.json
- Memformat entri jurnal menjadi entri JSON satu baris.json-pretty
- Memformat menjadi struktur JSON dalam beberapa baris.
Misalnya, untuk menampilkan menggunakan json-pretty
format, gunakan:
journalctl -o json-pretty
Format yang berbeda memungkinkan penggunaan data log dalam database, file skrip, atau menguraikannya melalui perangkat lunak pemantauan.
Pemeliharaan Log
Menyimpan data log memerlukan biaya dan memakan ruang. Berikut adalah beberapa tip dan trik untuk mengetahui penggunaan disk, memelihara file data log, dan mengosongkan ruang yang digunakan oleh file log lama.
Display Disk Usage
Untuk memeriksa penggunaan disk jurnal, jalankan perintah berikut:
journalctl --disk-usage
Outputnya menunjukkan total ruang yang ditempati disk oleh jurnal yang diarsipkan dan aktif.
Hapus Log Lama
Hapus arsip log lama dengan mengatur batas ukuran yang diinginkan. Perintah tersebut mengharuskan sudo untuk menghapus file /var/log/journal .
Misalnya, atur ukurannya menjadi 1M dengan:
sudo journalctl --vacuum-size=1M
Masukkan kata sandi sudo dan tekan Enter . Output mencetak nama dan ukuran file, dan baris terakhir menunjukkan jumlah memori yang dibebaskan.
Atau, hapus log yang diarsipkan berdasarkan waktu. File apa pun yang lebih lama dari waktu yang ditentukan, hapus dan kosongkan memori. Misalnya, untuk menghapus file yang lebih lama dari dua bulan, jalankan:
sudo journalctl --vacuum-time=2months
Sufiks waktunya adalah s
, m
, h
, days
, months
, weeks
, atau years
.
Batasi Jurnal
File konfigurasi jurnal memungkinkan pengaturan batas dan mengontrol berapa banyak data jurnal yang digunakan pada disk. Untuk mengedit file, jalankan:
sudo nano /etc/systemd/journald.conf
File berisi contoh bidang konfigurasi. Parameter berikut berhubungan dengan ukuran jurnal dan batas memori:
SystemMaxUse
- Penyimpanan persisten maksimum yang digunakan oleh jurnal.SystemKeepFree
- Jumlah ruang kosong yang ditinggalkan jurnal saat menambahkan entri ke penyimpanan persisten.SystemMaxFileSize
- Menyetel ukuran maksimum untuk file jurnal dalam penyimpanan persisten.RuntimeMaxUse
- Ruang penyimpanan volatil maksimum.RuntimeKeepFree
- Jumlah ruang kosong untuk penggunaan lain saat menulis ke penyimpanan yang mudah menguap.RuntimeMaxFileSize
- Menyetel ukuran maksimum untuk file jurnal dalam penyimpanan yang mudah menguap.
Kontrol ukuran file menargetkan file yang diarsipkan untuk mencapai batas. Batalkan komentar pada baris dan tetapkan batas untuk mendapatkan kontrol yang lebih baik atas penyimpanan mesin dan sumber daya konsumsi.
Kesimpulan
Panduan ini menunjukkan cara melihat, mengontrol, dan mengelola log jurnal systemd melalui contoh. journalctl
command adalah alat berharga yang membantu memecahkan masalah layanan Linux dan menemukan kesalahan sistem.