Ist systemd-journald eine Syslog-Implementierung?

22

Ich frage mich, ob systemd-journald eine neue Implementierung des Syslog-Protokolls ist oder vielmehr Syslog-Implementierungen wie rsyslog, syslog-ng verwendet

Ich habe ein bisschen gegoogelt, aber ich fand nichts überzeugend.

sebelk
quelle
Vielleicht möchten Sie klären, ob Sie mit "Syslog-Protokoll" das Empfangen von Syslog unter tcp | udp 514 oder das Senden oder beides meinen.
Alex Stragies
siehe auch mögliche täuschung: unix.stackexchange.com/questions/83173/…
Alex Stragies

Antworten:

33

Was die Protokolle betrifft, systemd-journald

  • … Ist der Listener eines Stream-Sockets mit dem Namen /run/systemd/journal/stdout. systemd verbindet die unformatierten Standardausgaben und Fehler von Diensten (die standardmäßig oder explizit StandardOutput=journal/ haben StandardError=journal) mit diesem Socket. Es empfängt somit das Protokoll von frei formatierten Datensätzen variabler Länge, die mit Zeilenvorschüben abgeschlossen sind.
  • … Heißt der Listener auf Datagramm-Sockets /run/systemd/journal/dev-log, von dem symbolisch verlinkt wird /dev/log. Dies empfängt das Protokoll, das die syslog()Bibliotheksfunktion in der GNU C-Bibliothek, die mit Anwendungen verknüpft ist, spricht.
  • … Versucht, Client eines anderen Dienstes zu sein, der einen Datagramm-Socket mit dem Namen überwacht /run/systemd/journal/syslog. Dies empfängt auch das Protokoll, das die syslog()Bibliotheksfunktion in der GNU C-Bibliothek spricht (obwohl systemd-journaldtatsächlich eine andere Bibliothek und eine andere Funktion zum Sprechen verwendet wird).
  • … Ist ein Leser von einem Zeichengerät mit dem Namen /dev/kmsg. Dieser empfängt das Protokoll, das der Linux-Kernel spricht. Hierbei handelt es sich um ein Protokoll mit variabler Länge und weitgehend freiem Format, bei dem Datensätze mit Zeilenumbrüchen abgeschlossen werden.
  • … Ist der Listener auf einem Datagramm-Socket mit dem Namen /run/systemd/journal/socket. Dies ist analog zum GNU C-Bibliotheksfall, in dem Anwendungen eine Verknüpfung zu einer Bibliothek herstellen, die ein bestimmtes Protokoll für diesen Socket spricht. mit der Ausnahme, dass sich die Funktion sd_journal_sendv()in einer System-C-Bibliothek befindet, zu der Anwendungen eine Verbindung herstellen, und das Protokoll nicht standardisiert ist, sondern ein reines System-D-Protokoll, das in jedem Datagramm ein Array von Schlüssel-Wert-Paaren und optional einen lesbaren Dateideskriptor enthält .

Das Protokoll, das von der syslog()Funktion in der GNU C-Bibliothek gesprochen wird, ist weder RFC 5424 noch RFC 3164 und praktisch ein eigener De-facto-Standard. Es ist nicht RFC 5424, da es nicht die richtige Menge an Leerzeichen und die Bindestriche enthält, die optionale Felder mit NIL-Werten kennzeichnen. Es handelt sich nicht um RFC 3164, da es ein PROCIDFeld anstelle von a enthält HOSTNAME.

Vor ein paar Jahren hätte Ihr Betriebssystem systemd Folgendes gehabt:

  • systemd-journaldall dies zu tun (und einige Dinge, die für Protokolle irrelevant sind ) und der Server zu sein, mit dem die GNU C-Bibliothek und die systemd C-Bibliothek über ihre jeweiligen Protokolle sprechen
  • Ein optionales syslog- oder rsyslog- oder syslog-ng-Programm, das entweder xinetd/ -style aufgerufen wird, inetdwenn versucht wird, Nachrichten an /run/systemd/journal/syslogden Socket zu senden und ihn als offenen Dateideskriptor zu empfangen, oder als direkter Dienst, der zum Öffnen und Abhören /run/systemd/journal/syslogmit seinem (entspricht dem imuxsockModul rsyslog) ; und Sprechen des GNU C-Bibliotheksprotokolls
  • Ein optionaler Syslog- oder Rsyslog- oder Syslog-ng- oder Udp-Syslog-Read-Dienst, der den RFC 5426-Datenverkehr überwacht

Heutzutage verfügt Ihr Betriebssystem über:

  • systemd-journald Wiederholen Sie die obigen Schritte und stellen Sie den Server dar, mit dem die GNU C-Bibliothek und die systemd C-Bibliothek kommunizieren
  • ein optionales rsyslog-Programm, das nicht über einen Socket, sondern als direkter Dienst aufgerufen wird und mit seinem imjournalModul direkt aus den systemd-Journaldateien liest
  • Ein optionaler Syslog- oder Rsyslog- oder Syslog-ng- oder Udp-Syslog-Read-Dienst, der den RFC 5426-Datenverkehr überwacht

Weitere Lektüre

JdeBP
quelle