GNU/Linux >> Belajar Linux >  >> Linux

Journalctl:Cara Membaca dan Mengedit Log Systemd

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 ke 00: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 atau emerg
  • Peringatan - 1 atau alert
  • Kritis - 2 atau crit
  • Kesalahan - 3 atau err
  • Peringatan - 4 atau warning
  • Pemberitahuan - 5 atau notice
  • Informasikan - 6 atau info
  • Debug - 7 atau debug

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.


Linux
  1. Cara membaca dan mengoreksi pesan penolakan SELinux

  2. Cara:Mengelola Log Sistem dengan Journalctl

  3. Bagaimana cara menyalin dan mengedit file di shell Android?

  1. Bagaimana Cara Menghapus Journalctl?

  2. Cara Menggunakan journalctl untuk Menganalisis Log di Linux

  3. Cara mengaktifkan systemd di WSL2:Ubuntu 20 dan CentOS 8

  1. Variabel Lingkungan Linux:Cara Membaca dan Mengatur di VPS Linux

  2. Panduan Pemula untuk “journalctl” – Cara Menggunakan Journalctl untuk Melihat dan Memanipulasi Systemd Logs

  3. Cara men-debug proses boot systemd di CentOS/RHEL 7 dan 8