Di mana buffer cincin kernel berada relatif terhadap rsyslog?

9

Apakah rsysloghanya lapisan abstraksi di atas buffer cincin kernel? Atau apakah buffer cincin kernel entitasnya sendiri dan rsysloginteraksinya seperti "aplikasi" lainnya?


sumber

Jawaban:

6

Meskipun berbagai potongan dokumentasi (termasuk man dmesg) menyebutnya sebagai "buffer cincin kernel", mungkin lebih baik untuk menyebutnya sebagai buffer log kernel, karena "ring buffer" adalah istilah umum dan saya percaya kernel juga menggunakan cincin buffer untuk berbagai hal yang sama sekali tidak terkait. "Printk buffer" juga sesuai, setelah fungsi ruang kernel digunakan untuk menulis padanya.

Bagaimanapun, ia berada di ruang kernel dan antarmuka baca disediakan melalui /proc/kmsgdan antarmuka baca-tulis via /dev/kmsg. Jadi jika sebagai root Anda pergi:

echo "Hello Kernel!" > /dev/ksmg

Anda akan melihatnya jika kemudian cat /dev/ksmg(Anda mungkin tidak akan melihat ini muncul dalam log apa pun - lihat komentar Matthew Phipps di bawah ini untuk kemungkinan alasan). Ini adalah output mentah dan tidak persis seperti yang Anda lihat dari dmesgatau di file log Anda. Ada sedikit dokumentasi tentang ini yang disediakan dengan sumber kernel. Membaca dari /proc/kmsg(tidak sama dengan /dev/ksmg) disarankan terhadap jika (r) syslog sedang berjalan.

Rsyslog adalah salah satu dari sejumlah implementasi syslog yang biasa digunakan di linux. Ini adalah aplikasi userland yang sumber pesan kernel dari /proc/ksmgdan pesan dari proses userland lain melalui soket /dev/log,.

goldilocks
sumber
2
Saya akan menunjukkan bahwa rsyslog memiliki $ KLogPermitNonKernelFacility mati secara default, itulah mengapa pesan non-kernel dari / proc / kmsg akan diabaikan oleh rsyslog kecuali Anda mengaktifkan opsi itu. Ini sebenarnya bisa sangat membingungkan, karena Upstart, misalnya, log ke / proc / kmsg dengan fasilitas non-kernel.
Vanessa Phipps