Чи є systemd-journald реалізацією syslog?


22

Цікаво, чи systemd-journald - це нова реалізація протоколу syslog, а точніше, він використовує реалізації syslog, такі як rsyslog, syslog-ng

Я трохи погуглився, але нічого не переконав у цьому.


Ви можете уточнити, чи під "протоколом syslog" ви маєте на увазі отримання syslog на tcp | udp 514, або відправлення або те і інше.
Алекс Страгіс

також дивіться можливий дуп: unix.stackexchange.com/questions/83173/…
Alex Stragies

Відповіді:


33

Що стосується протоколів, systemd-journald...

  • … - це слухач потокової сокети /run/systemd/journal/stdout. systemd підключає до цього сокета необроблені стандартні виходи та помилки служб (які мають дефолт або явно мають StandardOutput=journal/ StandardError=journal). Таким чином, він отримує протокол записів вільного формату змінної довжини, що закінчується каналами ліній.
  • … Називається слухачем на сокетах дейтаграми /run/systemd/journal/dev-log, який символічно пов'язаний з /dev/log. Це отримує протокол, що syslog()функціонує бібліотека в бібліотеці GNU C, пов'язана з додатками, говорить.
  • … Намагається бути клієнтом іншої служби, яка слухає сокет дейтаграми з назвою /run/systemd/journal/syslog. Це також отримує протокол, який syslog()функціонує бібліотека в бібліотеці GNU C (хоча systemd-journaldнасправді використовує іншу бібліотеку та іншу функцію, щоб говорити на ній).
  • … - це зчитувач із символьного пристрою на ім’я /dev/kmsg. Це отримує протокол, який говорить ядро ​​Linux, що є протоколом змінної довжини, значною мірою вільного формату, записів, що закінчуються каналами ліній.
  • … - це слухач на розетці дейтаграми /run/systemd/journal/socket. Це аналогічно випадку випадку бібліотеки GNU C у тому, що додатки посилаються на бібліотеку, яка говорить певний протокол до цього сокета; за винятком того, що функція полягає в тому sd_journal_sendv(), що в системній бібліотеці C, на яку посилаються додатки, і протокол не є стандартизованим, але є протоколом, призначеним лише для системного характеру, що містить масив пар key = value і, необов'язково, читабельний дескриптор файлу у кожній дейтаграмі .

Протокол, промовлений syslog()функцією в бібліотеці GNU C, не є ні RFC 5424, ні RFC 3164, і фактично є його власним фактичним стандартом. Це не RFC 5424, оскільки він не має правильної кількості пробілів і тире, що позначає необов'язкові поля зі значеннями NIL. Це не RFC 3164, оскільки він має PROCIDполе замість а HOSTNAME.

Пару років тому ваша системна операційна система мала б:

  • systemd-journaldвиконуючи все вищезазначене (і деякі речі, які не стосуються протоколів ) і є сервером, з яким спілкуються бібліотека GNU C і системна бібліотека C, використовуючи відповідні протоколи
  • необов'язковий syslog або rsyslog або syslog-ng, що викликається програмою, або xinetd/ inetd-style, коли щось намагається надсилати повідомлення /run/systemd/journal/syslogта отримувати сокет у вигляді дескриптора відкритого файлу, або як прямий сервіс, налаштований на відкриття та прослуховування /run/systemd/journal/syslogз його (еквівалентно rsyslog) imuxsockмодуль; та розмовляючи з протоколом бібліотеки GNU C
  • необов'язковий syslog або rsyslog або syslog-ng або udp-syslog-сервіс для читання для прослуховування трафіку RFC 5426

На сьогодні ваша системна операційна система має:

  • systemd-journald знову зробивши все вищезазначене та працюючи сервером, з яким спілкуються бібліотека GNU C та системна бібліотека C
  • додаткова програма rsyslog, яка викликається як пряма послуга, а не через сокет, який безпосередньо зчитує речі з системних файлів журналу за допомогою свого imjournalмодуля
  • необов'язковий syslog або rsyslog або syslog-ng або udp-syslog-сервіс для читання для прослуховування трафіку RFC 5426

Подальше читання

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.