Интересно, является ли systemd-journald новой реализацией протокола syslog или, скорее, он использует реализации syslog, такие как rsyslog, syslog-ng
Я немного погуглил, но не нашел в этом ничего убедительного.
syslog
systemd-journald
sebelk
источник
источник
Ответы:
Что касается протоколов,
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()
, она находится в библиотеке systemd C, на которую ссылаются приложения, и протокол не стандартизирован, а является протоколом только для systemd, содержащим массив пар ключ = значение и, необязательно, читаемый файловый дескриптор в каждой дейтаграмме ,Протокол, используемый
syslog()
функцией в библиотеке GNU C, не является ни RFC 5424, ни RFC 3164, а фактически является собственным стандартом де-факто. Это не RFC 5424, потому что он не имеет правильного количества пробелов и черточек, обозначающих необязательные поля со значениями NIL. Это не RFC 3164, потому что у него естьPROCID
поле вместоHOSTNAME
.Пару лет назад ваша операционная система systemd имела бы:
systemd-journald
делать все вышеперечисленное (и некоторые вещи, которые не имеют отношения к протоколам ) и быть сервером, с которым общаются библиотека GNU C и библиотека systemd C, используя свои соответствующие протоколыxinetd
/inetd
-style, когда что-то пытается отправлять сообщения/run/systemd/journal/syslog
и получать сокет в качестве дескриптора открытого файла, либо как прямой сервис, настроенный на открытие и прослушивание/run/systemd/journal/syslog
с его (эквивалентным rsyslog)imuxsock
модуль; и говоря протокол библиотеки GNU CВ настоящее время ваша операционная система systemd имеет:
systemd-journald
снова выполняем все вышеперечисленное и являемся сервером, с которым общаются библиотека GNU C и библиотека systemd Cimjournal
модулядальнейшее чтение
источник