Systemd-journald est-il une implémentation syslog?


22

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.


Vous voudrez peut-être préciser si par «protocole syslog» vous voulez dire recevoir syslog sur tcp | udp 514, ou envoyer, ou les deux.
Alex Stragies

Réponses:


33

En ce qui concerne les protocoles, systemd-journald

  • … Est l'écouteur sur un socket de flux nommé /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.
  • … Est l'écouteur des sockets datagramme nommé /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.
  • … Essaie d'être client d'un autre service écoutant sur une socket datagramme nommée /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-journaldqu'il utilise en fait une autre bibliothèque et une autre fonction pour la parler).
  • … Est un lecteur d'un périphérique de caractères nommé /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.
  • … Est l'écouteur sur un socket datagramme nommé /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 PROCIDchamp au lieu d'un HOSTNAME.

Il y a quelques années, votre système d'exploitation systemd aurait eu:

  • systemd-journaldfaire 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 respectifs
  • un programme syslog ou rsyslog ou syslog-ng facultatif appelé, soit xinetd/ inetd-style lorsque quelque chose tente d'envoyer des messages à /run/systemd/journal/sysloget 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/syslogavec son (équivalent de la imuxsockmodule rsyslog) ; et parler le protocole de la bibliothèque GNU C
  • un service syslog ou rsyslog ou syslog-ng ou udp-syslog-read facultatif écoutant le trafic RFC 5426

De 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
  • un programme rsyslog optionnel appelé en tant que service direct plutôt que via un socket, qui lit directement les choses des fichiers journaux systemd en utilisant son imjournalmodule
  • un service syslog ou rsyslog ou syslog-ng ou udp-syslog-read facultatif écoutant le trafic RFC 5426

Lectures complémentaires

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.