Apprendre Linux, 101 : journalisation système

2 xmlns= »http://www.w3.org/1999/xhtmlVue d’ensemble

Dans ce tutoriel, apprenez à :

  • Configurer le démon syslog
  • Comprendre les installations, les priorités et les actions standard
  • Configurer la rotation des journaux
  • Comprendre rsyslog et syslog-ng

Ce qui se passe dans votre système

Un système Linux possède de nombreux sous-systèmes et applications en cours d’exécution. Vous utilisez la journalisation du système pour recueillir des données sur votre système en cours d’exécution à partir du moment où il démarre. parfois, vous avez juste besoin de savoir que tout va bien. Parfois, vous avez simplement besoin de savoir que tout va bien. Dans d’autres cas, vous utilisez ces données pour l’audit, le débogage, pour savoir quand un disque ou une autre ressource manque de capacité, et pour bien d’autres raisons. Vous pouvez collecter des données de journal sur un système et les transmettre à un autre système pour traitement. Les données de journalisation peuvent être affichées sur un terminal, comme celui de l’utilisateur root, mais le plus souvent, elles sont enregistrées dans des fichiers ou transmises à un serveur de journalisation via des sockets. Inutile de dire que la journalisation est hautement configurable.

La traditionnelle installation syslog et son démon syslogd fournissent cette journalisation. De nos jours, syslog a été complété par d’autres installations de journalisation telles que rsyslog, syslog-ng, et le sous-système de journal systemd. Je vous présente ces installations dans ce tutoriel.

Ce tutoriel vous aide à vous préparer à l’objectif 108.2 du thème 108 de l’examen 102 du professionnel du serveur Linux (LPIC-1). L’objectif a une pondération de 3.

Prérequis

Pour tirer le meilleur parti des tutoriels de cette série, vous devez avoir une connaissance de base de Linux et un système Linux fonctionnel sur lequel vous pouvez pratiquer les commandes couvertes dans ce tutoriel. Vous devez être familier avec les commandes GNU et UNIX. Parfois, différentes versions d’un programme formatent la sortie différemment, donc vos résultats ne ressembleront pas toujours exactement aux listings présentés ici.

Dans ce tutoriel, j’utilise Slackware 42.2 pour les exemples de syslogd, CentOS 7 pour les exemples de rsyslogd et Fedora 26 pour les exemples de systemd-journalctl et de syslog-ng.

Syslog traditionnel et le démon syslogd

L’installation de journalisation traditionnelle du système syslog sur un système Linux fournit la journalisation du système et le piégeage des messages du noyau. Vous pouvez consigner les données sur votre système local ou les envoyer à un système distant. Utilisez le fichier de configuration /etc/syslog.conf pour contrôler finement le niveau de journalisation. La journalisation est effectuée par le démon syslogd, qui reçoit normalement des entrées via le socket /dev/log, comme indiqué dans le Listing 1.

Listing 1. /dev/log est une socket
$ #Slackware 42.2 $ /bin/ls -l /dev/log srw-rw-rw- 1 root root 0 Nov 19 16:35 /dev/log

Show moreShow more icon

xmlns= »http://www.w3.org/1999/xhtmlPour la journalisation locale, le fichier principal est généralement /var/log/messages, mais de nombreux autres fichiers sont utilisés dans la plupart des installations, généralement situés dans le répertoire /var/log ou un sous-répertoire de celui-ci. Vous pouvez les personnaliser largement. Par exemple, vous pouvez vouloir un journal séparé pour les messages du système de messagerie.

Le fichier de configuration syslog.conf

Le fichier syslog.conf est le fichier de configuration principal pour le démon syslogd. Les entrées de syslog.conf spécifient les règles de journalisation. Chaque règle comporte un champ sélecteur et un champ action, qui sont séparés par un ou plusieurs espaces ou tabulations. Le champ sélecteur identifie l’installation et les priorités auxquelles la règle s’applique, et le champ action identifie l’action de journalisation pour l’installation et les priorités.

Les installations définies sont auth (ou security), authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, syslog, user, uucp, et local0 à local7. Le mot clé auth doit être utilisé à la place de security, et le mot clé mark est à usage interne.

Les priorités (par ordre croissant de gravité) sont :

  1. debug
  2. info
  3. notice
  4. warning (ou warn)
  5. err (ou error)
  6. crit
  7. alert
  8. emerg (ou panic)

Les mots-clés entre parenthèses (warn, erreur, et panique) sont maintenant dépréciés.

Le comportement par défaut consiste à prendre des mesures pour le niveau spécifié et pour tous les niveaux supérieurs, bien qu’il soit possible de limiter la journalisation à des niveaux spécifiques. Chaque sélecteur se compose d’une installation et d’une priorité séparées par un point (dot). Il est possible de spécifier plusieurs installations pour une action donnée en les séparant par une virgule. Plusieurs paires installation/priorité pour une action donnée peuvent être spécifiées en les séparant par un point-virgule. Le Listing 2 montre un exemple d’un fichier syslog.conf simple.

Listing 2. Exemple de syslog.conf
#Log anything 'warn' or higher. #Exclude authpriv, cron, mail, and news. These are logged elsewhere. #Don't log private authentication messages! *.warn;\ authpriv.none;cron.none;mail.none;news.none -/var/log/syslog #The authpriv file has restricted access. authpriv.* /var/log/secure #Log all the mail messages in one place. mail.* -/var/log/maillog #Log cron stuff cron.* /var/log/cron #Everybody gets emergency messages *.emerg * #Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler

Afficher plusAfficher plus d’icône

xmlns= »http://www.w3.org/1999/xhtmlNotes:

  • Comme pour de nombreux fichiers de configuration, les lignes commençant par # et les lignes vides sont ignorées.
  • Un * peut être utilisé pour faire référence à toutes les installations ou à toutes les priorités.
  • Le mot clé de priorité spéciale none indique qu’aucune journalisation pour cette installation ne doit être effectuée avec cette action.
  • Le trait d’union devant un nom de fichier (comme -/var/log/maillog, dans cet exemple) indique que le fichier journal ne doit pas être synchronisé après chaque écriture. Vous pourriez perdre des informations après une panne du système, mais vous pourriez gagner en performance en faisant cela.

Les actions sont génériquement appelées  » fichiers journaux « , bien qu’il ne s’agisse pas nécessairement de fichiers réels. Le tableau 1 décrit les logfiles possibles.

Tableau 1. Actions dans syslog.conf

.

Action But
Fichier régulier Spécifier le nom de chemin complet, commençant par une barre oblique (/). Faites-le précéder d’un trait d’union (-) pour omettre de synchroniser le fichier après chaque entrée de journal. Cela peut entraîner une perte d’informations en cas de crash, mais peut améliorer les performances.
Tuyaux nommés Utiliser un premier entré premier sorti (FIFO) ou un tuyau nommé comme destination pour les messages de journal en incluant un symbole de tuyau (|) avant le nom du fichier. Vous devez créer la FIFO à l’aide de la commande mkfifo avant de démarrer (ou de redémarrer) syslogd. Les FIFO sont parfois utilisées pour le débogage.
Terminal ou console Envoyer les messages de journal à un terminal tel que /dev/console.
Machine distante Faire suivre les messages à un autre hôte en mettant un signe at (@) devant le nom d’hôte. Notez que les messages ne sont pas transférés depuis l’hôte récepteur.
Liste d’utilisateurs Utiliser une liste d’utilisateurs séparés par des virgules pour recevoir des messages (si l’utilisateur est connecté). L’utilisateur root est fréquemment inclus ici.
Everyone logged on Spécifier un astérisque (*) pour que toutes les personnes connectées soient notifiées à l’aide de la commande wall.

Préfixez une priorité avec ! pour indiquer que l’action ne doit pas s’appliquer à ce niveau et plus. De même, préfixez une priorité avec = pour indiquer que la règle ne s’applique qu’à ce niveau ou avec != pour indiquer que la règle s’applique à tous sauf à ce niveau. La liste 3 montre quelques exemples, et la page de manuel de syslog.conf en contient beaucoup plus.

Liste 3. Exemples supplémentaires de syslog.conf
#Kernel messages are first, stored in the kernel#file, critical messages and higher ones also go#to another host and to the console#kern.* /var/adm/kernelkern.crit @log‑serverkern.crit /dev/consolekern.info;kern.!err /var/adm/kernel‑info#Store all mail messages except info priority in /var/log/mail. mail.*;mail.!=info /var/log/mail

Afficher plusAfficher plus d’icône

xmlns= »http://www.w3.org/1999/xhtmlLa commandesyslogddémarre le démon syslogd. Elle possède un certain nombre d’options, dont-fpour spécifier un fichier de configuration différent, et-apour des sockets supplémentaires à écouter. Le démon répond à plusieurs signaux, y compris SIGHUP qui l’oblige à se réinitialiser. Consultez les pages man ou info pour plus de détails sur l’exécution et l’interaction avec le démon syslogd.

La liste 4 montre certains des messages qui pourraient être enregistrés dans /var/log/messages en utilisant syslogd des paramètres de configuration comme ceux de la liste 2.

La liste 4. Exemple de messages journalisés dans /var/log/messages
root@attic4‑sl42:~#tail ‑n 20 /var/log/messages Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: Product: USB DISK 2.0Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: Manufacturer: Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: SerialNumber: 070B53DF11FC0170Nov 19 21:39:57 attic4‑sl42 kernel: usb‑storage 1‑1.1:1.0: USB Mass Storage device detectedNov 19 21:39:57 attic4‑sl42 kernel: scsi host12: usb‑storage 1‑1.1:1.0Nov 19 21:39:57 attic4‑sl42 mtp‑probe: checking bus 1, device 12: "/sys/devices/pci0000:00/0000:00:12.2/usb1/1‑1/1‑1.1" Nov 19 21:39:57 attic4‑sl42 mtp‑probe: bus: 1, device: 12 was not an MTP device Nov 19 21:39:58 attic4‑sl42 kernel: scsi 12:0:0:0: Direct‑Access USB DISK 2.0 PMAP PQ: 0 ANSI: 4Nov 19 21:39:59 attic4‑sl42 kernel: sd 12:0:0:0: 30299520 512‑byte logical blocks: (15.5 GB/14.4 GiB)Nov 19 21:39:59 attic4‑sl42 kernel: sd 12:0:0:0: Write Protect is offNov 19 21:40:00 attic4‑sl42 kernel: sdd: sdd1Nov 19 21:40:00 attic4‑sl42 kernel: sd 12:0:0:0: Attached SCSI removable diskNov 19 21:42:36 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:38 attic4‑sl42 kernel: usb 1‑1.1: USB disconnect, device number 12Nov 19 21:42:38 attic4‑sl42 kernel: <27> udevd: inotify_add_watch(6, /dev/sdd, 10) failed: No such file or directoryNov 19 21:56:48 attic4‑sl42 ‑‑ MARK ‑‑

Show moreShow more icon

2 xmlns= »http://www.w3.org/1999/xhtmlLe démon de journalisation du noyau – klogd

Dans le Listing 3, vous avez vu quelques façons de configurer la journalisation des messages du noyau. Mais comment les messages du noyau au démarrage sont-ils consignés avant même qu’un système de fichiers ne soit monté ? Le noyau stocke les messages dans un tampon circulaire en mémoire. Le démon klogd traite ces messages directement vers une console, ou un fichier tel que /var/log/dmesg, ou par le biais de l’installation syslog.

Notez que l’exemple du Listing 2 consigne tous les messages de niveau avertissement ou supérieur dans /var/log/syslog. Cela inclut notamment les messages du noyau.

Comme pour la commande syslogd, la commande klogd possède un certain nombre d’options. Consultez les pages man ou info pour plus de détails. Il n’existe pas de fichier de configuration pour klogd.

Vous pouvez également afficher les messages du tampon circulaire du noyau à l’aide de la commande dmesg. La commande dispose également d’options pour interagir avec le tampon circulaire, par exemple pour lire et effacer les messages.

Rotter et archiver les fichiers journaux

Avec la quantité de journalisation possible, vous devez pouvoir contrôler la taille des fichiers journaux. Cela se fait à l’aide de la commande logrotate, qui est généralement exécutée comme une tâche cron. (Voir notre tutoriel, Automatiser les tâches d’administration système en planifiant des tâches, pour plus d’informations sur les tâches cron).

L’idée générale derrière la commande logrotate est que les fichiers journaux sont périodiquement sauvegardés et qu’un nouveau journal est lancé. Plusieurs générations de journal sont conservées, et lorsqu’un journal vieillit jusqu’à la dernière génération, il peut être archivé. Par exemple, il peut être envoyé par courrier à un utilisateur d’archives.

Utilisez le fichier de configuration /etc/logrotate.conf pour spécifier comment votre rotation de journal et votre archivage doivent se produire. Vous pouvez spécifier différentes fréquences, telles que quotidienne, hebdomadaire ou mensuelle, pour différents fichiers journaux, et vous pouvez contrôler le nombre de générations à maintenir et quand ou si vous devez envoyer des copies par courrier à un utilisateur d’archives. Le Listing 5 montre un exemple de fichier /etc/logrotate.conf.

Listing 5. Exemple de /etc/logrotate.conf
#/etc/logrotate.conf ##logrotate is designed to ease administration of systems that generate large #numbers of log files. It allows automatic rotation, compression, removal, and #mailing of log files. Each log file may be handled daily, weekly, monthly, or #when it grows too large. ##logrotate is normally run daily from root's crontab. ##For more details, see "man logrotate". #rotate log files weekly: weekly #keep 4 weeks worth of backlogs: rotate 4 #create new (empty) log files after rotating old ones: create #uncomment if you want to use the date as a suffix of the rotated file #dateext #uncomment this if you want your log files compressed: #compress #some packages install log rotation information in this directory: include /etc/logrotate.d #Rotate /var/log/wtmp: /var/log/wtmp { missingok monthly create 0664 root utmp minsize 1M rotate 1 } #Rotate /var/log/btmp: /var/log/btmp { missingok monthly create 0600 root root rotate 1 } #Note that /var/log/lastlog is not rotated. This is intentional, and it should #not be. The lastlog file is a database, and is also a sparse file that takes #up much less space on the drive than it appears. #system-specific logs may be also be configured below:

Show moreShow more icon

xmlns= »http://www.w3.org/1999/xhtmlLe fichier logrotate.conf comporte des options globales au début. Ce sont les options par défaut si rien de plus spécifique n’est spécifié ailleurs. Dans cet exemple, les fichiers journaux font l’objet d’une rotation hebdomadaire et des sauvegardes de quatre semaines sont conservées. Lorsqu’un fichier journal fait l’objet d’une rotation, un nouveau fichier est automatiquement créé à la place de l’ancien. Notez que le fichier logrotate.conf peut inclure des spécifications provenant d’autres fichiers. Ici, tous les fichiers de /etc/logrotate.d sont inclus.

Cet exemple inclut également des règles spécifiques pour /var/log/wtmp et /var/log/btmp, dont la rotation est mensuelle. Aucun message d’erreur n’est émis si les fichiers sont manquants. Un nouveau fichier est créé, et une seule sauvegarde est maintenue. L’accès à ces fichiers est également restreint par la définition de permissions.

Note : Les fichiers /var/log/wtmp et /var/log/btmp enregistrent respectivement les tentatives de connexion réussies et non réussies. Contrairement à la plupart des fichiers journaux, ce ne sont pas des fichiers en texte clair. Vous pouvez les examiner en utilisant les commandes last ou lastb. Consultez les pages de manuel de ces commandes pour plus de détails.

Dans cet exemple, lorsqu’une sauvegarde atteint la dernière génération, elle est supprimée car il n’y a aucune spécification de ce qu’il faut faire d’autre avec elle.

Vous pouvez sauvegarder les fichiers journaux lorsqu’ils atteignent une taille spécifique. Vous pouvez également scripter des commandes à exécuter avant ou après l’opération de sauvegarde. Le Listing 6 montre un exemple plus complexe.

Listing 6. Un autre exemple de configuration de logrotate
/var/log/messages { rotate 5 mail logsave@log-server size 100k postrotate /usr/bin/killall -HUP syslogd endscript }

Montrer plusMontrer plus l’icône

xmlns= »http://www.w3.org/1999/xhtmlDans le Listing 6, /var/log/messages est tourné après avoir atteint une taille de 100 Ko. Cinq fichiers de sauvegarde sont maintenus, et lorsque la sauvegarde la plus ancienne vieillit, elle est envoyée par courrier à logsave@log-server. Lepostrotateintroduit un script qui redémarre le démon syslogd une fois la rotation terminée, en lui envoyant le signal HUP. L’instructionendscriptest nécessaire pour terminer le script et est également requise si un scriptprerotateest présent. Voir la page de manuel de logrotate pour des informations plus complètes.

Comme pour beaucoup de fichiers de configuration de ce type, certains programmes fournissaient une configuration supplémentaire, généralement dans le répertoire etc/logrotate.d. La liste 7 montre les fichiers sur mon système Slackware.

Liste 7. Fichiers de configuration pour logrotate
root@attic4‑sl42:~#ls /etc/logrot/etc/logrotate.conf/etc/logrotate.d:consolekit mcelog mysql.orig ulogd wpa_supplicanthttpd mysql syslog vsftpdroot@attic4‑sl42:~#cat /etc/logrotate.d/httpd/var/log/httpd/_log { rotate 10 notifempty missingok size=5M compress delaycompress sharedscripts postrotate /etc/rc.d/rc.httpd restart endscript}

Afficher plusAfficher plus d’icône

2 xmlns= »http://www.w3.org/1999/xhtmlScanner les fichiers journaux pour une activité notable

Les entrées du fichier journal sont généralement horodatées et contiennent le nom d’hôte du processus de déclaration, ainsi que le nom du processus. Le Listing 8 montre quelques lignes de /var/log/messages, contenant des entrées de plusieurs programmes.

Listing 8. Exemples d’entrées du fichier journal
Nov 19 15:48:31 attic4-sl42 kernel: EXT4-fs (sda6): re-mounted. Opts: (null) Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 3, device 3: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.1" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 3, device: 3 was not an MTP device Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 3, device 4: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 3, device: 4 was not an MTP device Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 1, device 4: "/sys/devices/pci0000:00/0000:00:12.2/usb1/1-1/1-1.1" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 1, device: 4 was not an MTP device Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/ifconfig lo 127.0.0.1 Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/dhcpcd -t 10 eth0 Nov 19 15:48:36 attic4-sl42 dhcpcd: eth0: adding address fe80::4c2a:3f48:e0f7:cc90 Nov 19 15:48:41 attic4-sl42 sshd: Server listening on 0.0.0.0 port 22. Nov 19 15:48:41 attic4-sl42 sshd: Server listening on :: port 22. Nov 19 15:48:41 attic4-sl42 ntpd: ntpd [email protected] Fri Jun 3 23:08: 22 UTC 2016 (1): Starting Nov 19 15:48:41 attic4-sl42 ntpd: Command line: /usr/sbin/ntpd -g -p /var /run/ntpd.pid Nov 19 15:48:41 attic4-sl42 ntpd: proto: precision = 0.230 usec (-22) Nov 19 15:48:41 attic4-sl42 ntpd: Listen and drop on 0 v6wildcard :12 3 Nov 19 15:48:41 attic4-sl42 ntpd: Listen and drop on 1 v4wildcard 0.0.0.0:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 2 lo 127.0.0.1:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 3 eth0 192.168.1.24:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 4 lo :123 Nov 19 15:48:41 attic4-sl42 ntpd: failed to init interface for address fe80::8616:f9ff:fe04:7a2a%2 Nov 19 15:48:41 attic4-sl42 ntpd: Listening on routing socket on fd #21 for interface updates Nov 19 15:48:41 attic4-sl42 acpid: starting up with netlink and the input layer Nov 19 15:48:41 attic4-sl42 acpid: 1 rule loaded Nov 19 15:48:41 attic4-sl42 acpid: waiting for events: event logging is off Nov 19 15:48:42 attic4-sl42 dbus: Activating service name='org.freedesktop.PolicyKit1' (using servicehelper) Nov 19 15:48:42 attic4-sl42 ntpd: failed to init interface for address fe80::8616:f9ff:fe04:7a2a%2

Afficher plusAfficher plus d’icône

xmlns= »http://www.w3.org/1999/xhtmlLa dernière ligne du Listing 8 montre un échec du démon Network Time Protocol (ntpd). Dans ce cas, il n’a pas réussi à initialiser une interface IP V6 car ce système utilise uniquement des connexions IP V4.

Vous pouvez balayer les fichiers journaux à l’aide d’un pager, tel que less, ou rechercher des entrées spécifiques (telles que les messages ntpd de l’hôte attic4-sl42) en utilisant grep, comme indiqué dans le Listing 9.

Listing 9. Analyse des fichiers journaux
root@attic4-sl42:~#grep "attic4-sl42 ntpd" /var/log/messages | tail -9 Nov 19 21:17:12 attic4-sl42 ntpd: Command line: /usr/sbin/ntpd -g -p /var/run/ntpd.pid Nov 19 21:17:12 attic4-sl42 ntpd: proto: precision = 0.220 usec (-22) Nov 19 21:17:13 attic4-sl42 ntpd: Listen and drop on 0 v6wildcard :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen and drop on 1 v4wildcard 0.0.0.0:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 2 lo 127.0.0.1:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 3 eth0 192.168.1.24:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 4 lo :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 5 eth0 :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listening on routing socket on fd #22 for interface updates

Afficher plusAfficher plus d’icône

2 xmlns= »http://www.w3.org/1999/xhtmlSurveiller les fichiers journaux

Occasionnellement, vous pouvez avoir besoin de surveiller les fichiers journaux pour des événements. Par exemple, vous pouvez essayer d’attraper un événement peu fréquent au moment où il se produit. Dans un tel cas, vous pouvez utiliser la commande tail avec l’option -f pour suivre le fichier journal. Le Listing 10 montre un exemple.

Listing 10. Suivre les mises à jour du fichier journal
root@attic4-sl42:~#tail -n 1 -f /var/log/messages Nov 20 09:24:58 attic4-sl42 kernel: sd 15:0:0:0: Attached SCSI removable disk Nov 20 09:26:23 attic4-sl42 kernel: usb 3-2.4: USB disconnect, device number 5 Nov 20 09:27:13 attic4-sl42 sshd: Accepted password for ian from 192.168.1.40 port 58184 ssh2 Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: new low-speed USB device number 6 using ohci-pci Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: New USB device found, idVendor=046d, idProduct=c50e Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: Product: USB Receiver Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: Manufacturer: Logitech Nov 20 09:29:08 attic4-sl42 kernel: input: Logitech USB Receiver as /devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4/3-2.4:1.0/0003:046D:C50E.0004/input/input19 Nov 20 09:29:08 attic4-sl42 kernel: hid-generic 0003:046D:C50E.0004: input,hidraw1: USB HID v1.11 Mouse on usb-0000:00:12.0-2.4/input0 Nov 20 09:29:08 attic4-sl42 mtp-probe: checking bus 3, device 6: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4" Nov 20 09:29:08 attic4-sl42 mtp-probe: bus: 3, device: 6 was not an MTP device

Montrer plusMontrer plus l’icône

2 xmlns= »http://www.w3.org/1999/xhtmlTracer les problèmes signalés dans les fichiers journaux

Lorsque vous trouvez des problèmes dans les fichiers journaux, notez l’heure, le nom de l’hôte et le processus qui a généré le problème. Si le message identifie le problème de manière suffisamment spécifique pour que vous puissiez le résoudre, vous avez terminé. Si ce n’est pas le cas, vous devrez peut-être mettre à jour le fichier syslog.conf afin de spécifier que davantage de messages soient consignés pour l’installation appropriée. Par exemple, vous pouvez avoir besoin d’afficher des messages d’information au lieu de messages d’avertissement ou même des messages de niveau débogage. Votre application peut avoir des facilités supplémentaires que vous pouvez utiliser.

Enfin, si vous avez besoin de mettre des marques dans le fichier journal pour vous aider à savoir quels messages ont été journalisés à quel stade de votre activité de débogage, vous pouvez utiliser la commande logger à partir d’une fenêtre de terminal ou d’un script shell pour envoyer un message de votre choix au démon syslogd pour qu’il soit journalisé selon les règles de syslog.conf.

Utilisation de rsyslogd

Rsyslog est le système autodécrit rapide comme une fusée pour le traitement des journaux. Il est compatible en amont de syslog dans le sens où il peut traiter des configurations compatibles avec syslog et également gérer l’appel syslog à l’information du journal. Il apporte également plusieurs améliorations qui ne sont pas rétrocompatibles. En particulier, il prend en charge des protocoles de journalisation supplémentaires et il peut journaliser vers des bases de données, telles que MySQL ou PostgreSQL, ainsi que vers des fichiers. Vous pouvez filtrer toute partie d’un message syslog et configurer entièrement le format de sortie.

Les pages traditionnelles man et info fournissent des informations de base sur rsyslog. Cependant, il y a considérablement plus de documentation fournie au format HTML dans le répertoire doc de votre système. Vous devrez peut-être installer le paquetage rsyslog-doc s’il n’était pas installé dans votre système. La racine de l’arbre HTML se trouve dans le répertoire /usr/share/doc/rsyslog-8.24.0/html/index.html. L’emplacement peut différer sur votre système.

Le rsyslog programme s’exécute comme un démon, similaire à syslogd. Le fichier de configuration est par défaut rsyslog.conf.

La liste 11. Un fichier de configuration rsyslog.conf
$ cat /etc/rsyslog.conf #rsyslog configuration file#For more information see /usr/share/doc/rsyslog‑*/rsyslog_conf.html#If you experience problems, see https://www.rsyslog.com/doc/v8-stable/troubleshooting/index.html####MODULES #####The imjournal module bellow is now used as a message source instead of imuxsock.$ModLoad imuxsock #provides support for local system logging (e.g. via logger command)$ModLoad imjournal #provides access to the systemd journal#$ModLoad imklog #reads kernel messages (the same are read from journald)#$ModLoad immark #provides ‑‑MARK‑‑ message capability#Provides UDP syslog reception#$ModLoad imudp#$UDPServerRun 514#Provides TCP syslog reception#$ModLoad imtcp#$InputTCPServerRun 514####GLOBAL DIRECTIVES #####Where to place auxiliary files$WorkDirectory /var/lib/rsyslog#Use default timestamp format$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat#File syncing capability is disabled by default. This feature is usually not required,#not useful and an extreme performance hit#$ActionFileEnableSync on#Include all config files in /etc/rsyslog.d/$IncludeConfig /etc/rsyslog.d/.conf#Turn off message reception via local log socket;#local messages are retrieved through imjournal now.$OmitLocalLogging on#File to store the position in the journal$IMJournalStateFile imjournal.state####RULES #####Log all kernel messages to the console.#Logging much else clutters up the screen.#kern./dev/console#Log anything (except mail) of level info or higher.#Don't log private authentication messages!.info;mail.none;authpriv.none;cron.none /var/log/messages#The authpriv file has restricted access.authpriv./var/log/secure#Log all the mail messages in one place.mail.‑/var/log/maillog#Log cron stuffcron./var/log/cron#Everybody gets emergency messages.emerg :omusrmsg:#Save news errors of level crit and higher in a special file.uucp,news.crit /var/log/spooler#Save boot messages also to boot.loglocal7./var/log/boot.log####begin forwarding rule ####The statement between the begin ... end define a SINGLE forwarding#rule. They belong together, do NOT split them. If you create multiple#forwarding rules, duplicate the whole block!#Remote Logging (we use TCP for reliable delivery)##An on‑disk queue is created for this action. If the remote host is#down, messages are spooled to disk and sent when it is up again.#$ActionQueueFileName fwdRule1 #unique name prefix for spool files#$ActionQueueMaxDiskSpace 1g #1gb space limit (use as much as possible)#$ActionQueueSaveOnShutdown on #save messages to disk on shutdown#$ActionQueueType LinkedList #run asynchronously#$ActionResumeRetryCount ‑1 #infinite retries if host is down#remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional#.*` remote‑host:514####end of the forwarding rule ###

Show moreShow more icon

xmlns= »http://www.w3.org/1999/xhtmlVous reconnaîtrez les entrées familières de syslog.conf au milieu du fichier, entourées de choses supplémentaires que l’installation rsyslog comprend. Consultez les pages man ou info ou la documentation HTML pour plus de détails.

Vous pouvez utiliser logrotate avec les fichiers créés par rsyslogd, bien que les bases de données SQL puissent nécessiter un script ou d’autres outils. De même, la commande logger fonctionne toujours pour placer votre propre marque dans le journal.

Utilisation du service de journal systemd

Les exemples de service de journal systemd de cette section proviennent de Fedora 26.

Le programme systemd-journald est un démon de service système qui collecte et stocke les données de journalisation. Il crée et maintient des journaux structurés et indexés basés sur les informations de journalisation qui sont reçues des sources syslog habituelles ainsi que des messages de journal structurés en utilisant une API de journal native.

Le socket habituel /dev/log est un lien vers /run/systemd/journal/dev-log comme indiqué dans le Listing 12.

Listing 12. Les sockets dev/log et /run/systemd/journal/dev-log
#ls ‑l /dev/loglrwxrwxrwx. 1 root root 28 Nov 20 23:43 /dev/log ‑> /run/systemd/journal/dev‑log#ls ‑l /run/systemd/journal/dev‑logsrw‑rw‑rw‑. 1 root root 0 Nov 20 23:43 /run/systemd/journal/dev‑log

Show moreShow more icon

xmlns= »http://www.w3.org/1999/xhtmlLe systemd-journald démon écoute sur les sockets et d’autres entités du système de fichiers, dont /dev/kmsg, /dev/log, /run/systemd/journal/dev-log, /run/systemd/journal/socket, et /run/systemd/journal/stdout. Il peut également écouter les événements d’audit en utilisant netlink, qui transfère les informations du noyau vers l’espace utilisateur en utilisant des sockets.

La plupart des données de journal sont textuelles, mais les données binaires sont autorisées, théoriquement jusqu’à 2^64-1 octets en taille. Le journal stocke les données du journal dans /run/log/journal/ par défaut. Le système de fichiers /run/ est volatile, donc les données du journal sont perdues lorsque le système redémarre. Pour rendre les données persistantes, vous créez /var/log/journal/ et systemd-journald y stockera alors les données.

Comme pour les autres systèmes de journalisation, il existe un fichier de configuration. Par défaut, il s’agit de /etc/systemd/journald.conf. De nombreuses options sont compilées par défaut, donc la plupart des options du fichier de configuration sont initialement commentées comme indiqué dans le Listing 13. Décommentez celles que vous souhaitez modifier. Comme d’habitude, des fichiers de configuration supplémentaires peuvent être situés dans le répertoire journald.conf.d. Les paquets devraient installer leurs informations de configuration de journal dans /usr/lib/systemd/*.conf.d/.

Liste 13. Exemple initial de /etc/systemd/journald.conf
# This file is part of systemd.## systemd is free software; you can redistribute it and/or modify it# under the terms of the GNU Lesser General Public License as published by# the Free Software Foundation; either version 2.1 of the License, or# (at your option) any later version.##Entries in this file show the compile time defaults.#You can change settings by editing this file.#Defaults can be restored by simply deleting this file.##See journald.conf(5) for details.#Storage=auto#Compress=yes#Seal=yes#SplitMode=uid#SyncIntervalSec=5m#RateLimitIntervalSec=30s#RateLimitBurst=1000#SystemMaxUse=#SystemKeepFree=#SystemMaxFileSize=#SystemMaxFiles=100#RuntimeMaxUse=#RuntimeKeepFree=#RuntimeMaxFileSize=#RuntimeMaxFiles=100#MaxRetentionSec=#MaxFileSec=1month#ForwardToSyslog=no#ForwardToKMsg=no#ForwardToConsole=no#ForwardToWall=yes#TTYPath=/dev/console#MaxLevelStore=debug#MaxLevelSyslog=debug#MaxLevelKMsg=notice#MaxLevelConsole=info#MaxLevelWall=emerg

Show moreShow more icon

xmlns= »http://www.w3.org/1999/xhtmlUtilisez les pages de man ou d’info pour journald.conf pour en savoir plus sur les paramètres de configuration pris en charge.

Utilisez la commande journalctl pour afficher les informations journalisées. Le Listing 14 montre comment afficher les 10 dernières lignes de données journalisées, puis utiliser l’option -f pour suivre, ou afficher en continu, les nouvelles lignes à mesure qu’elles sont ajoutées. Utilisez l’option --rotate pour faire tourner les fichiers du journal.

La liste 14. Utilisation de journalctl pour afficher ou suivre les messages du journal
#journalctl ‑n 10 ‑f‑‑ Logs begin at Mon 2007‑07‑09 22:14:00 EDT. ‑‑Nov 21 10:24:47 atticf26 dbus‑daemon: Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus‑org.freedesktop.nm‑dispatcher.service' requested by ':1.9' (uid=0 pid=650 comm="/usr/sbin/NetworkManager ‑‑no‑daemon " label="system_u:system_r:NetworkManager_t:s0")Nov 21 10:24:47 atticf26 systemd: Starting Network Manager Script Dispatcher Service...Nov 21 10:24:47 atticf26 audit: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:24:47 atticf26 dbus‑daemon: Successfully activated service 'org.freedesktop.nm_dispatcher'Nov 21 10:24:47 atticf26 systemd: Started Network Manager Script Dispatcher Service.Nov 21 10:24:47 atticf26 nm‑dispatcher: req:1 'connectivity‑change': new request (5 scripts)Nov 21 10:24:47 atticf26 nm‑dispatcher: req:1 'connectivity‑change': start running ordered scripts...Nov 21 10:24:48 atticf26 gnome‑software‑service.desktop: 15:24:48:0034 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:24:52 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 15 (xid=0x36565033)Nov 21 10:24:57 atticf26 audit: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:25:07 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 14 (xid=0x36565033)Nov 21 10:25:21 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 17 (xid=0x36565033)Nov 21 10:25:22 atticf26 NetworkManager: <warn> dhcp4 (enp4s0): request timed outNov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed unknown ‑> timeoutNov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): canceled DHCP transaction, DHCP client pid 7110Nov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed timeout ‑> doneNov 21 10:25:22 atticf26 NetworkManager: <info> device (enp4s0): state change: ip‑config ‑> failed (reason 'ip‑config‑unavailable', internal state 'managed')Nov 21 10:25:22 atticf26 NetworkManager: <warn> device (enp4s0): Activation: failed for connection 'enp3s0'Nov 21 10:25:22 atticf26 NetworkManager: <info> device (enp4s0): state change: failed ‑> disconnected (reason 'none', internal state 'managed')...Nov 21 10:26:37 atticf26 NetworkManager: <info> device (enp4s0): state change: ip‑config ‑> deactivating (reason 'user‑requested', internal state 'managed')Nov 21 10:26:37 atticf26 NetworkManager: <info> audit: op="device‑disconnect" interface="enp4s0" ifindex=3 pid=7167 uid=1000 result="success"Nov 21 10:26:37 atticf26 NetworkManager: <info> device (enp4s0): state change: deactivating ‑> disconnected (reason 'user‑requested', internal state 'managed')Nov 21 10:26:37 atticf26 gnome‑software‑service.desktop: 15:26:37:0783 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:37 atticf26 avahi‑daemon: Withdrawing address record for fe80::3fd7:76aa:e99d:da5d on enp4s0.Nov 21 10:26:37 atticf26 avahi‑daemon: Leaving mDNS multicast group on interface enp4s0.IPv6 with address fe80::3fd7:76aa:e99d:da5d.Nov 21 10:26:37 atticf26 avahi‑daemon: Interface enp4s0.IPv6 no longer relevant for mDNS.Nov 21 10:26:37 atticf26 gnome‑software‑service.desktop: 15:26:37:0787 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:37 atticf26 NetworkManager: <info> dhcp4 (enp4s0): canceled DHCP transaction, DHCP client pid 7179Nov 21 10:26:37 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed unknown ‑> doneNov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=filter family=2 entries=99Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=nat family=2 entries=59Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=mangle family=2 entries=42Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=raw family=2 entries=30Nov 21 10:26:37 atticf26 dbus‑daemon: Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus‑org.freedesktop.nm‑dispatcher.service' requested by ':1.9' (uid=0 pid=650 comm="/usr/sbin/NetworkManager ‑‑no‑daemon " label="system_u:system_r:NetworkManager_t:s0")Nov 21 10:26:37 atticf26 systemd: Starting Network Manager Script Dispatcher Service...Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=filter family=10 entries=90Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=nat family=10 entries=54Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=mangle family=10 entries=41Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=raw family=10 entries=31Nov 21 10:26:37 atticf26 dbus‑daemon: Successfully activated service 'org.freedesktop.nm_dispatcher'Nov 21 10:26:37 atticf26 audit: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:26:37 atticf26 nm‑dispatcher: req:1 'down' : new request (5 scripts)Nov 21 10:26:37 atticf26 systemd: Started Network Manager Script Dispatcher Service.Nov 21 10:26:37 atticf26 nm‑dispatcher: req:1 'down' : start running ordered scripts...Nov 21 10:26:38 atticf26 gnome‑software‑service.desktop: 15:26:38:0787 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:48 atticf26 audit: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:28:35 atticf26 cupsd: REQUEST localhost ‑ ‑ "POST / HTTP/1.1" 200 182 Renew‑Subscription successful‑ok

Afficher plusAfficher plus d’icône

.

xmlns= »http://www.w3.org/1999/xhtmlUtiliser la commande systemctl pour afficher des informations sur, interagir avec, ou contrôler le démon et les unités associées. Le Listing 15 montre un exemple.

Listing 15. Utilisation de la commande systemctl
#systemctl list‑units "journal" ‑‑no‑pagerUNIT LOAD ACTIVE SUB DESCRIPTION abrt‑journal‑core.service loaded active running Creates ABRT problems frosystemd‑journal‑flush.service loaded active exited Flush Journal to Persistesystemd‑journald.service loaded active running Journal Service systemd‑journald‑audit.socket loaded active running Journal Audit Socket systemd‑journald‑dev‑log.socket loaded active running Journal Socket (/dev/log)systemd‑journald.socket loaded active running Journal Socket LOAD = Reflects whether the unit definition was properly loaded.ACTIVE = The high‑level unit activation state, i.e. generalization of SUB.SUB = The low‑level unit activation state, values depend on unit type.6 loaded units listed. Pass ‑‑all to see loaded but inactive units, too.To show all installed unit files use 'systemctl list‑unit‑files'.

Afficher plusAfficher plus d’icône

2 xmlns= »http://www.w3.org/1999/xhtmlUtilisation de syslog-ng

Syslog-ng se décrit comme « un démon de journalisation amélioré, prenant en charge un large éventail de méthodes d’entrée et de sortie : syslog, texte non structuré, mise en file d’attente, SQL & NoSQL. » Il prend en charge les protocoles syslog existants et améliorés et ajoute la prise en charge des formats de message JSON (JavaScript Object Notation) et journald. Syslog-ng prend en charge des capacités étendues pour filtrer l’entrée et formater la sortie.

Une fois installé, il y a des informations de base dans les pages man et info. Cependant, vous voudrez probablement utiliser « The syslog-ng Open Source Edition Administrator Guide », qui est disponible aux formats HTML et PDF. (Voir les ressources à droite pour plus d’informations).

Le fichier de configuration par défaut est /etc/syslog-ng/syslog-ng.conf. Un exemple est présenté dans le Listing 16. Des fichiers de configuration supplémentaires peuvent être situés dans le répertoire /etc/syslog-ng/conf.d.

Liste 16. Exemple de syslog-ng.conf
@version:3.9@include "scl.conf"#syslog‑ng configuration file.##This should behave pretty much like the original syslog on RedHat. But#it could be configured a lot smarter.##See syslog‑ng(8) and syslog‑ng.conf(5) for more information.##Note: it also sources additional configuration files (*.conf)# located in /etc/syslog‑ng/conf.d/options { flush_lines (0); time_reopen (10); log_fifo_size (1000); chain_hostnames (off); use_dns (no); use_fqdn (no); create_dirs (no); keep_hostname (yes);};source s_sys { system(); internal(); #udp(ip(0.0.0.0) port(514));};destination d_cons { file("/dev/console"); };destination d_mesg { file("/var/log/messages"); };destination d_auth { file("/var/log/secure"); };destination d_mail { file("/var/log/maillog" flush_lines(10)); };destination d_spol { file("/var/log/spooler"); };destination d_boot { file("/var/log/boot.log"); };destination d_cron { file("/var/log/cron"); };destination d_kern { file("/var/log/kern"); };destination d_mlal { usertty(""); };filter f_kernel { facility(kern); };filter f_default { level(info..emerg) and not (facility(mail) or facility(authpriv) or facility(cron)); };filter f_auth { facility(authpriv); };filter f_mail { facility(mail); };filter f_emergency { level(emerg); };filter f_news { facility(uucp) or (facility(news) and level(crit..emerg)); };filter f_boot { facility(local7); };filter f_cron { facility(cron); };#log { source(s_sys); filter(f_kernel); destination(d_cons); };log { source(s_sys); filter(f_kernel); destination(d_kern); };log { source(s_sys); filter(f_default); destination(d_mesg); };log { source(s_sys); filter(f_auth); destination(d_auth); };log { source(s_sys); filter(f_mail); destination(d_mail); };log { source(s_sys); filter(f_emergency); destination(d_mlal); };log { source(s_sys); filter(f_news); destination(d_spol); };log { source(s_sys); filter(f_boot); destination(d_boot); };log { source(s_sys); filter(f_cron); destination(d_cron); };#Source additional configuration files (.conf extension only)@include "/etc/syslog‑ng/conf.d/.conf"#vim:ft=syslog‑ng:ai:si:ts=4:sw=4:et:

Show moreShow more icon

xmlns= »http://www.w3.org/1999/xhtmlEn général, vous n’avez pas besoin d’exécuter à la fois le journal systemd et le journal syslog-ng. Si vous souhaitez utiliser les deux, vous devrez apporter quelques modifications de configuration aux deux et les redémarrer. Recherchez sur le Web les instructions actuelles sur la façon de procéder.

Ceci conclut votre introduction aux installations de journalisation sur Linux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *