Bagaimana Anda menggunakan pola jurnalctl systemd

21

Saya mencoba menggunakan journalctlpencocokan pola pada SYSLOG_IDENTIFIERS. Sebagai contoh, saya memiliki banyak pesan yang ditandai sshd:

$ journalctl -t sshd | wc -l
987

tetapi jika saya mencoba menggunakan pencocokan pola untuk menemukannya:

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --

Halaman manual journalctl mengatakan pola seharusnya bekerja, tetapi saya tidak dapat menemukan hal lain tentang bagaimana pola digunakan / didefinisikan dalam systemd.

$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

Saya menjalankan ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
Mark Grimes
sumber
5
Berdasarkan diskusi tentang IRC, tampaknya ini adalah bug (atau masalah dengan dokumentasi). Bug telah diajukan .
Mark Grimes
1
coba ini secara realtime: journalctl -f | grep sshd
nexoma
Anda benar-benar dapat menambahkan beberapa -t <identifier> jika itu cocok untuk Anda.
sivann

Jawaban:

15

Ini adalah bug doc yang ditutup ketika kesalahan ketik pada manhalaman diperbarui.

Laporan bug mengarah ke komentar berikut dalam kode :

Kami sebenarnya tidak menerima pola, karenanya jangan mengklaimnya.

Sebagai solusinya, Anda mungkin dapat menggunakan grepseperti yang disarankan dalam komentar untuk pertanyaan Anda. Sesuatu seperti ini:

journalctl | grep sshd
Tim Penner
sumber
0

Judul pertanyaan aslinya "Bagaimana Anda menggunakan pola jurnalctl systemd ". Ini menunjuk ke fitur yang sangat spesifik dari jurnalctl yang disebut "MATCHES" daripada penyaringan ekspresi reguler generik.

Fitur "MATCHES" dirinci sepenuhnya bersama dengan semua fitur lainnya di halaman manualnya yang menyatakan pada awalnya:

Jika satu atau lebih argumen kecocokan dilewati, hasilnya disaring sesuai.

Fitur "cocok" dimaksudkan untuk menyaring entri log berdasarkan sejumlah kemungkinan filter.

Untuk kasus-kasus seperti yang ada di pertanyaan awal, ini adalah bagaimana saya melakukannya (saya juga menjalankan ArchLinux).

Pertama, Anda perlu tahu nama layanan yang Anda minati. Saya biasanya melakukan ini:

systemctl | grep sshd

Saya mendapatkan ini:

sshd.service       loaded active running   OpenSSH Daemon

Kemudian Anda dapat meminta journalctluntuk memfilter dengan "nama unit systemd" seperti ini:

journalctl _SYSTEMD_UNIT=sshd.service

Ini disebut "pencocokan pencocokan". Itu saja.

Seandainya pertanyaan aslinya ditulis alih-alih berarti " bagaimana menerapkan grepke jurnalctl output", maka Anda dapat menerapkan grepke log yang disimpan "sejauh ini" dengan

journalctl | grep ssh

atau lihat entri log yang sedang masuk dengan

journalctl -f | grep ssh

dan tekan CTRL-C untuk menghentikan aliran. Tentu saja, Anda dapat menggunakan pipa yang lebih kompleks dengan pola reguler berbutir halus atau banyak grepperintah.

EnzoR
sumber
Terima kasih atas tanggapannya, tetapi _SYTEMD_UNIT tidak menerima pola. Seperti disebutkan dalam komentar dan jawaban @ Tim saya, ini adalah bug dalam dokumen.
Mark Grimes
@ MarkGrimes, Setidaknya bagi saya (systemd 239) berfungsi. Saya selalu menguji apa yang saya katakan sebelum menuliskannya. Ini berfungsi seperti yang didokumentasikan.
EnzoR
Pertanyaannya adalah tentang menggunakan pola , misalnya ssh*. Dokumen jurnal menyatakan bahwa ini mungkin pada satu waktu. Dokumen tidak benar dan telah diperbarui.
Mark Grimes
@MarkGrimes Pertanyaannya adalah tentang pola jurnalctl systemd bukan pola karakter . Silakan lihat jawaban saya yang diperbarui. Dan itu bekerja di bawah ArchLinux persis seperti yang didokumentasikan.
EnzoR
-2

Anda dapat menentukan file unit saat Anda menjalankan journalctl.

jurnalctl -f -u sshd.service

Saya hanya akan menunjukkan jurnal sshd

Kwun Yeung
sumber
Jawaban ini tidak menjawab pertanyaan. Pengguna meminta untuk menggunakan pola dalam filter.
Merlijn Sebrechts