Je me demande si systemd-journald est une nouvelle implémentation du protocole syslog, ou plutôt, il utilise des implémentations syslog, telles que rsyslog, syslog-ng
J'ai un peu googlé, mais je n'ai rien trouvé de convaincant à ce sujet.
Je me demande si systemd-journald est une nouvelle implémentation du protocole syslog, ou plutôt, il utilise des implémentations syslog, telles que rsyslog, syslog-ng
J'ai un peu googlé, mais je n'ai rien trouvé de convaincant à ce sujet.
Réponses:
En ce qui concerne les protocoles, systemd-journald
…
/run/systemd/journal/stdout
. systemd connecte les sorties standard brutes et les erreurs de services (qui ont par défaut ou qui ont explicitement StandardOutput=journal
/ StandardError=journal
) à ce socket. Il reçoit ainsi le protocole des enregistrements de format libre de longueur variable terminés par des sauts de ligne./run/systemd/journal/dev-log
, qui est symboliquement lié à partir de /dev/log
. Celui-ci reçoit le protocole dont syslog()
parle la fonction de bibliothèque dans la bibliothèque GNU C, liée aux applications./run/systemd/journal/syslog
. Celui-ci reçoit également le protocole utilisé par la syslog()
fonction de bibliothèque de la bibliothèque GNU C (bien systemd-journald
qu'il utilise en fait une autre bibliothèque et une autre fonction pour la parler)./dev/kmsg
. Celui-ci reçoit le protocole dont parle le noyau Linux, qui est un protocole de longueur variable, en grande partie au format libre, dont les enregistrements se terminent par des sauts de ligne./run/systemd/journal/socket
. Ceci est analogue au cas de la bibliothèque GNU C dans la mesure où les applications sont liées à une bibliothèque qui parle un certain protocole à ce socket; sauf que la fonction est sd_journal_sendv()
, c'est dans une bibliothèque systemd C que les applications se lient, et le protocole n'est pas standardisé mais est un protocole systemd uniquement comprenant un tableau de paires clé = valeur, et éventuellement un descripteur de fichier lisible, dans chaque datagramme .Le protocole énoncé par la syslog()
fonction dans la bibliothèque GNU C n'est ni RFC 5424 ni RFC 3164, et est en fait son propre standard de facto. Ce n'est pas RFC 5424 car il n'a pas la bonne quantité d'espaces et les tirets désignant des champs optionnels avec des valeurs NIL. Ce n'est pas RFC 3164 car il a un PROCID
champ au lieu d'un HOSTNAME
.
Il y a quelques années, votre système d'exploitation systemd aurait eu:
systemd-journald
faire tout ce qui précède (et certaines choses qui ne sont pas pertinentes en ce qui concerne les protocoles ) et être le serveur auquel la bibliothèque GNU C et la bibliothèque systemd C parlent en utilisant leurs protocoles respectifsxinetd
/ inetd
-style lorsque quelque chose tente d'envoyer des messages à /run/systemd/journal/syslog
et de recevoir le socket en tant que descripteur de fichier ouvert, ou en tant que service direct configuré pour s'ouvrir et écouter /run/systemd/journal/syslog
avec son (équivalent de la imuxsock
module rsyslog) ; et parler le protocole de la bibliothèque GNU CDe nos jours, votre système d'exploitation systemd a:
systemd-journald
faisant à nouveau tout ce qui précède et étant le serveur auquel la bibliothèque GNU C et la bibliothèque systemd C parlent imjournal
module