Zastanawiam się, czy systemd-journald jest nową implementacją protokołu syslog, czy raczej używa implementacji syslog, takich jak rsyslog, syslog-ng
Trochę googlowałem, ale nie znalazłem w tym nic przekonującego.
syslog
systemd-journald
sebelk
źródło
źródło
Odpowiedzi:
Jeśli chodzi o protokoły,
systemd-journald
…/run/systemd/journal/stdout
. systemd łączy surowe standardowe dane wyjściowe i błędy usług (które domyślnie lub jawnie mająStandardOutput=journal
/StandardError=journal
) do tego gniazda. W ten sposób odbiera protokół rekordów w dowolnym formacie o zmiennej długości zakończonych liniami./run/systemd/journal/dev-log
, który jest symbolicznie powiązany/dev/log
. Otrzymuje protokół, którysyslog()
mówi funkcja biblioteki w bibliotece GNU C, połączona z aplikacjami./run/systemd/journal/syslog
. Odbiera to również protokół, którysyslog()
mówi funkcja biblioteki w bibliotece GNU C (chociażsystemd-journald
faktycznie używa innej biblioteki i innej funkcji do jej wypowiedzenia)./dev/kmsg
. Odbiera to protokół, który mówi jądro Linuksa, który jest protokołem o zmiennej długości, w dużej mierze w dowolnym formacie, rekordów zakończonych podawaniem linii./run/systemd/journal/socket
. Jest to analogiczne do przypadku biblioteki GNU C, ponieważ aplikacje łączą się z biblioteką, która mówi do tego gniazda pewien protokół; z wyjątkiem tego, że funkcja jestsd_journal_sendv()
w bibliotece systemowej C, do której prowadzą aplikacje, a protokół nie jest ustandaryzowany, ale jest protokołem tylko systemowym, zawierającym tablicę par klucz = wartość i opcjonalnie czytelny deskryptor pliku, w każdym datagramie .Protokół używany przez
syslog()
funkcję w bibliotece GNU C nie jest ani RFC 5424, ani RFC 3164 i jest faktycznie własnym de facto standardem. To nie jest RFC 5424, ponieważ nie ma prawidłowej ilości białych znaków i myślników oznaczających opcjonalne pola z wartościami NIL. To nie jest RFC 3164, ponieważ maPROCID
pole zamiastHOSTNAME
.Kilka lat temu systemowy system operacyjny miałby:
systemd-journald
wykonując wszystkie powyższe (i niektóre rzeczy, które nie mają znaczenia, jeśli chodzi o protokoły ) i będąc serwerem, z którym biblioteka GNU C i biblioteka systemowa C rozmawiają przy użyciu swoich odpowiednich protokołówxinetd
/inetd
-style, gdy coś próbuje wysłać wiadomości do/run/systemd/journal/syslog
gniazda i odbierać go jako otwarty deskryptor pliku, lub jako prosta usługa skonfigurowana do otwierania i nasłuchiwania/run/systemd/journal/syslog
za jego pomocą (odpowiednikimuxsock
moduł rsyslog) ; i mówiąc o protokole biblioteki GNU C.Obecnie systemowy system operacyjny ma:
systemd-journald
ponownie wykonując wszystkie powyższe czynności i będąc serwerem, z którym rozmawiają biblioteka GNU C i biblioteka systemd C.imjournal
modułuDalsza lektura
źródło