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.
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.
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óry syslog()
mówi funkcja biblioteki w bibliotece GNU C, połączona z aplikacjami./run/systemd/journal/syslog
. Odbiera to również protokół, który syslog()
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 jest sd_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ż ma PROCID
pole zamiast HOSTNAME
.
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ą (odpowiednik imuxsock
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łu