Що стосується протоколів, 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
Подальше читання