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.
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.
Antworten:
Was die Protokolle betrifft, systemd-journald…
/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./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./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)./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./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 sprechenxinetd/ -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-BibliotheksprotokollsHeutzutage 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 imjournalModul direkt aus den systemd-Journaldateien liest