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.
syslog
systemd-journald
sebelk
quelle
quelle
Antworten:
Was die Protokolle betrifft,
systemd-journald
…/run/systemd/journal/stdout
. systemd verbindet die unformatierten Standardausgaben und Fehler von Diensten (die standardmäßig oder explizitStandardOutput=journal
/ habenStandardError=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 diesyslog()
Bibliotheksfunktion in der GNU C-Bibliothek, die mit Anwendungen verknüpft ist, spricht./run/systemd/journal/syslog
. Dies empfängt auch das Protokoll, das diesyslog()
Bibliotheksfunktion in der GNU C-Bibliothek spricht (obwohlsystemd-journald
tatsä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 Funktionsd_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 einPROCID
Feld anstelle von a enthältHOSTNAME
.Vor ein paar Jahren hätte Ihr Betriebssystem systemd Folgendes gehabt:
systemd-journald
all 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,inetd
wenn versucht wird, Nachrichten an/run/systemd/journal/syslog
den Socket zu senden und ihn als offenen Dateideskriptor zu empfangen, oder als direkter Dienst, der zum Öffnen und Abhören/run/systemd/journal/syslog
mit seinem (entspricht demimuxsock
Modul 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 kommunizierenimjournal
Modul direkt aus den systemd-Journaldateien liestWeitere Lektüre
quelle