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