Mi chiedo se systemd-journald è una nuova implementazione del protocollo syslog, o piuttosto, utilizza implementazioni syslog, come rsyslog, syslog-ng
Ho cercato su Google un po ', ma non ho trovato nulla di convincente al riguardo.
Mi chiedo se systemd-journald è una nuova implementazione del protocollo syslog, o piuttosto, utilizza implementazioni syslog, come rsyslog, syslog-ng
Ho cercato su Google un po ', ma non ho trovato nulla di convincente al riguardo.
Risposte:
Per quanto riguarda i protocolli, systemd-journald
...
/run/systemd/journal/stdout
. systemd collega gli output standard non elaborati e gli errori dei servizi (che sono diventati predefiniti o che hanno esplicitamente StandardOutput=journal
/ StandardError=journal
) a questo socket. Riceve così il protocollo di record a formato libero di lunghezza variabile terminati con avanzamenti di riga./run/systemd/journal/dev-log
, che è simbolicamente collegato da /dev/log
. Questo riceve il protocollo che la syslog()
funzione della libreria nella libreria GNU C, collegata alle applicazioni, parla./run/systemd/journal/syslog
. Questo riceve anche il protocollo di cui syslog()
parla la funzione di libreria nella libreria GNU C (sebbene systemd-journald
utilizzi effettivamente un'altra libreria e un'altra funzione per parlarla)./dev/kmsg
. Questo riceve il protocollo di cui parla il kernel Linux, che è un protocollo di lunghezza variabile, in gran parte formato libero, record terminato con linefeed./run/systemd/journal/socket
. Questo è analogo al caso della libreria GNU C in quanto le applicazioni si collegano a una libreria che parla un certo protocollo a questo socket; a parte il fatto che la funzione è sd_journal_sendv()
, è in una libreria C di systemd a cui si collegano le applicazioni e il protocollo non è standardizzato ma è un protocollo solo di sistema comprendente un array di coppie chiave = valore e facoltativamente un descrittore di file leggibile, in ogni datagramma .Il protocollo parlato dalla syslog()
funzione nella libreria GNU C non è né RFC 5424 né RFC 3164, ed è effettivamente il suo standard di fatto. Non è RFC 5424 perché non ha la quantità corretta di spazi bianchi e i trattini che designano campi opzionali con valori NIL. Non è RFC 3164 perché ha un PROCID
campo invece di a HOSTNAME
.
Un paio di anni fa, il tuo sistema operativo avrebbe avuto:
systemd-journald
facendo tutto quanto sopra (e alcune cose che sono irrilevanti quando si tratta di protocolli ) ed essendo il server con cui la libreria GNU C e la libreria systemd C parlano usando i loro rispettivi protocollixinetd
/ inetd
style quando qualcosa tenta di inviare messaggi /run/systemd/journal/syslog
e ricevere il socket come descrittore di file aperto o come servizio diretto configurato per aprire e ascoltare /run/systemd/journal/syslog
con il suo (equivalente del rsyslog) imuxsock
modulo; e parlando il protocollo della libreria GNU C.Oggi il tuo sistema operativo ha:
systemd-journald
di nuovo facendo tutto quanto sopra ed essendo il server con cui parlano la libreria C GNU e la libreria C systemd imjournal
modulo