web-dev-qa-db-fra.com

Où vont les messages de journalisation avec journald et rsyslog

Sur Ubuntu 18.04 journald et rsyslog sont installés. Les deux servent le même objectif de collecte et de stockage des messages de journal. Nous avons donc deux programmes faisant le même travail ici.

Ce que j'ai pu découvrir, c'est que journald enregistre uniquement les messages de journal dans ses propres fichiers journaux qui peuvent être interrogés avec la commande journalctl. Aucun fichier lisible n'est écrit. En outre, le journal collectera toujours la sortie du journal de tous les services qui ont été démarrés par systemd, qui devraient toujours être tous parce que finalement systemd démarre tous les processus même à partir de schémas plus anciens comme les scripts init.

Rsyslog reçoit également des messages de journal, via une socket qui fonctionne comme syslog a fonctionné au cours des 50 dernières années. Les applications doivent envoyer leurs messages à ce socket et rsyslog les recevra. Je ne sais pas comment journald reçoit réellement quoi que ce soit. Ensuite, rsyslog transfère ces messages reçus dans différents fichiers lisibles selon sa configuration.

Dans Ubuntu, les deux sont installés mais ne semblent pas connectés. Au moins rsyslog ne charge pas le module "imjournal" avec lequel il pourrait "lire" les messages du journal de journald. Je ne comprends pas comment rsyslog lit (activement) quoi que ce soit, je pensais qu'il ne recevait (passivement) que des messages. Mais il n'utilise pas ça de toute façon.

Le fichier/var/log/syslog contient en grande partie le même contenu que celui indiqué par journalctl, seule la sortie de Sudo est manquante dans le fichier. Mais je n'ai pas tout comparé.

Donc comment ça fonctionne? Qui envoie les messages du journal à où et qui les reçoit et où sont-ils transférés? Si les deux destinations sont remplies, chaque application doit-elle envoyer des messages à la fois à syslog et à journald séparément? S'ils sont interconnectés, pourquoi aucun message n'est-il dupliqué? Sont-ils filtrés à nouveau? Quel emplacement est le plus complet et où dois-je chercher si je veux l'image complète?

Si tout cela a changé dans les nouvelles versions d'Ubuntu, je serais également intéressé par cela, car je vais passer d'un serveur plus ancien à 20.04 l'année prochaine.

Edit: Voici quelques autres ressources sur le sujet:

Toutes ces informations me laissent un peu confuse. Il semble que le journal reçoive toutes les données syslog de l'appel système en premier lieu (mon/dev/log pointe vers/run/systemd/journal/dev-log), et rsyslog les récupère du journal via une socket qui ressemble à la socket qui a été utilisé avant qu'il y ait journal (éventuellement/run/systemd/journal/syslog, implicitement utilisé s'il voit systemd autour). Ensuite, rsyslog peut effectuer tout son traitement de journal avancé (y compris l'écriture des fichiers hérités/var/log). Si je n'ai pas besoin de cette magie, je pourrais simplement désactiver rsyslog. Mais je n'en suis pas sûr du tout!

2
ygoe

Emplacements de stockage des messages

stockage des messages journald

Quand il est temps de nettoyer les anciens messages dans journald (je le fais tous les mois), vous pouvez voir les fichiers où les messages sont stockés:

Deleted archived journal /var/log/journal/1ff17e6df1874fb3b2a75e669fa978f1/[email protected]~ (32.0M).
Deleted archived journal /var/log/journal/1ff17e6df1874fb3b2a75e669fa978f1/[email protected]~ (8.0M).

Comme vous pouvez le voir, les noms de fichiers sont très longs et énigmatiques.

stockage des messages syslog

syslog les messages sont conservés dans un format de nom de fichier plus traditionnel:

$ ll /var/log/syslog*
-rw-r----- 1 syslog adm   2161 Nov 29 04:47 /var/log/syslog
-rw-r----- 1 syslog adm 159700 Nov 29 04:32 /var/log/syslog.1
-rw-r----- 1 syslog adm  24466 Nov 28 04:27 /var/log/syslog.2.gz
-rw-r----- 1 syslog adm  23489 Nov 27 04:30 /var/log/syslog.3.gz
-rw-r----- 1 syslog adm  28087 Nov 26 04:28 /var/log/syslog.4.gz
-rw-r----- 1 syslog adm  28300 Nov 25 04:30 /var/log/syslog.5.gz
-rw-r----- 1 syslog adm  27445 Nov 24 05:36 /var/log/syslog.6.gz
-rw-r----- 1 syslog adm  27460 Nov 23 08:25 /var/log/syslog.7.gz

Les noms de fichiers se terminant par .gz ont des données compressées pour économiser de l'espace sur le disque.


Les messages enregistrés ne sont pas les mêmes

Un test rapide révèle que les deux systèmes d'enregistrement des messages ne sont pas des doublons exacts. Nous allons mettre un message dans le système avec la commande logger, puis le rechercher et afficher les cinq lignes qui le précèdent.

$ logger $0 "ygoe to two logs?"


$ cat /var/log/syslog | grep ygoe -a5 Nov 27 20:53:35 alien upowerd[2032]: message repeated 3 times: [ (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:101A.017F/power_supply/hidpp_battery_63] Nov 27 20:54:23 alien upowerd[2032]: (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:2010.0180/power_supply/hidpp_battery_64 Nov 27 20:59:25 alien wpa_supplicant[1591]: wlp60s0: WPA: Group rekeying completed with ae:20:2e:cc:94:50 [GTK=CCMP] Nov 27 21:00:02 alien CRON[24890]: (root) CMD (/usr/bin/updatedb) Nov 27 21:07:48 alien upowerd[2032]: (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:2010.0180/power_supply/hidpp_battery_64 Nov 27 21:08:22 alien rick: bash ygoe to two logs?


$ journalctl -xe | grep ygoe -a5 Nov 27 20:59:25 alien wpa_supplicant[1591]: wlp60s0: WPA: Group rekeying completed with ae:20:2e:cc:94:50 [GTK=CCMP] Nov 27 21:00:01 alien CRON[24881]: pam_unix(cron:session): session opened for user root by (uid=0) Nov 27 21:00:01 alien CRON[24890]: (root) CMD (/usr/bin/updatedb) Nov 27 21:00:04 alien CRON[24881]: pam_unix(cron:session): session closed for user root Nov 27 21:07:48 alien upowerd[2032]: (upowerd:2032): UPower-Linux-WARNING **: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.2/0003:046D:C52B.017E/0003:046D:2010.0180/power_supply/hidpp_battery_64 Nov 27 21:08:22 alien rick[8000]: bash ygoe to two logs?

Comme vous pouvez le voir, journalctl fournit plus de détails que syslog. De plus journalctl:

Il y a eu un débat parmi les développeurs sur la duplication de journald et syslog il y a quelques années cependant, je n'ai pas trouvé le lien pour l'instant.

1
WinEunuuchs2Unix