Apakah systemd-journald merupakan implementasi syslog?

22

Saya ingin tahu apakah systemd-journald adalah implementasi baru dari protokol syslog, atau lebih tepatnya, ia menggunakan implementasi syslog, seperti rsyslog, syslog-ng

Saya sudah sedikit mencari di Google, tetapi saya tidak menemukan hal yang meyakinkan tentang hal itu.

sebelk
sumber
Anda mungkin ingin mengklarifikasi jika dengan "protokol syslog" yang Anda maksud menerima syslog pada tcp | udp 514, atau mengirim, atau keduanya.
Alex Stragies
juga melihat kemungkinan penipuan: unix.stackexchange.com/questions/83173/...
Alex Stragies

Jawaban:

33

Sejauh menyangkut protokol, systemd-journald...

  • ... adalah pendengar pada soket aliran bernama /run/systemd/journal/stdout. systemd menghubungkan output standar mentah dan kesalahan layanan (yang secara default atau secara eksplisit memiliki StandardOutput=journal/ StandardError=journal) ke soket ini. Dengan demikian ia menerima protokol catatan format bebas panjang variabel yang diakhiri dengan umpan baris.
  • ... adalah pendengar pada soket datagram bernama /run/systemd/journal/dev-log, yang secara simbolis dihubungkan dari /dev/log. Ini menerima protokol yang syslog()fungsi perpustakaan di GNU C library, yang terhubung ke aplikasi, berbicara.
  • ... mencoba menjadi klien dari layanan lain yang mendengarkan pada soket datagram yang bernama /run/systemd/journal/syslog. Ini juga menerima protokol yang syslog()fungsi pustaka dalam pustaka GNU C berbicara (meskipun systemd-journaldsebenarnya menggunakan pustaka lain dan fungsi lain untuk mengucapkannya).
  • ... adalah pembaca dari perangkat karakter yang bernama /dev/kmsg. Ini menerima protokol yang dibicarakan oleh kernel Linux, yang merupakan protokol dengan panjang variabel, sebagian besar format bebas, catatan diakhiri dengan linefeeds.
  • ... adalah pendengar pada soket datagram bernama /run/systemd/journal/socket. Ini analog dengan kasus pustaka GNU C dalam aplikasi yang menautkan ke perpustakaan yang berbicara protokol tertentu ke soket ini; kecuali bahwa fungsinya adalah sd_journal_sendv(), itu ada di pustaka systemd C yang ditautkan oleh aplikasi, dan protokolnya tidak distandarisasi tetapi merupakan protokol hanya sistem yang terdiri dari array pasangan kunci = nilai, dan secara opsional merupakan deskriptor file yang dapat dibaca, di setiap datagram .

Protokol yang diucapkan oleh syslog()fungsi dalam pustaka GNU C bukanlah RFC 5424 atau RFC 3164, dan secara efektif merupakan standar de facto sendiri. Ini bukan RFC 5424 karena tidak memiliki jumlah spasi yang benar dan tanda hubung yang menentukan bidang opsional dengan nilai NIL. Ini bukan RFC 3164 karena memiliki PROCIDbidang alih-alih a HOSTNAME.

Beberapa tahun yang lalu, sistem operasi systemd Anda akan memiliki:

  • systemd-journaldmelakukan semua hal di atas (dan beberapa hal yang tidak relevan ketika berhubungan dengan protokol ) dan menjadi server tempat GNU C library dan systemd C library berbicara menggunakan protokol masing-masing
  • program syslog atau rsyslog atau syslog-ng opsional dijalankan, baik xinetd/ inetd-style ketika ada sesuatu yang mencoba mengirim pesan ke /run/systemd/journal/syslogdan menerima soket sebagai deskriptor file terbuka, atau sebagai layanan langsung yang dikonfigurasi untuk membuka dan mendengarkan /run/systemd/journal/syslogdengan (setara dengan rsyslog) imuxsockmodule; dan berbicara protokol pustaka GNU C
  • opsional syslog atau rsyslog atau syslog-ng atau udp-syslog-read service mendengarkan lalu lintas RFC 5426

Saat ini, sistem operasi systemd Anda memiliki:

  • systemd-journald lagi melakukan semua hal di atas dan menjadi server yang diajak oleh GNU C library dan systemd C library
  • program rsyslog opsional dipanggil sebagai layanan langsung daripada melalui soket, yang secara langsung membaca hal-hal dari file jurnal systemd menggunakan imjournalmodulnya
  • opsional syslog atau rsyslog atau syslog-ng atau udp-syslog-read service mendengarkan lalu lintas RFC 5426

Bacaan lebih lanjut

JdeBP
sumber