[Ceci a été écrit quelques années avant l'adoption généralisée de journald sur les systèmes systemd et n'y touche pas. À l' heure actuelle (fin 2018) à la fois journald et (r) syslog, décrit ci - dessous, sont utilisés sur distros comme Debian. Sur d'autres, vous devrez peut-être installer rsyslog si vous souhaitez l'utiliser en parallèle, mais l'intégration avec journald est simple.]
Je ne discuterai pas beaucoup de la journalisation en ce qui concerne ubuntu, car le sujet est normalisé pour linux en général (et je pense que la plupart ou la totalité de ce que j'ai à dire est également vraie en général pour n'importe quelle saveur * nix, mais ne le faites pas croyez-moi sur parole). Je ne dirai pas non plus grand chose sur "comment lire les journaux" au-delà de répondre à cette question:
L'hypothèse est-elle même correcte qu'ils sont écrits pour une lisibilité humaine ou sont-ils généralement évalués et utilisés par d'autres outils?
Je suppose que cela dépend de l'application, mais en général, au moins en ce qui concerne ce qui se trouve dans syslog (voir ci-dessous), ils devraient être lisibles par l'homme. "Significatif pour moi" est un autre problème, lol. Cependant, ils peuvent également être structurés de manière à faciliter leur analyse avec des outils standard (grep, awk, etc.) à des fins spécifiques.
Dans tous les cas, il existe une distinction entre les applications qui effectuent leur propre journalisation et les applications qui utilisent l'enregistreur système. Apache par défaut est le premier, bien qu'il puisse être configuré pour le faire plus tard (ce que je pense que la plupart des gens considéreraient comme indésirable). Les applications qui effectuent leur propre journalisation peuvent le faire de n'importe quelle manière en utilisant n'importe quel emplacement pour le (s) fichier (s), donc il n'y a pas grand-chose à dire à ce sujet. L'enregistreur système est généralement appelé syslog
.
syslog
"Syslog" est vraiment un standard qui est implémenté avec un processus démon génériquement appelé syslogd (d est pour le démon!). Le démon syslog prédominant actuellement utilisé sur linux, y compris ubuntu, est rsyslogd
. Rsyslogd peut faire beaucoup de choses, mais comme configuré par défaut sur la plupart des distributions, il émule un syslog traditionnel, qui trie les choses dans des fichiers texte en clair /var/log
. Vous pouvez trouver de la documentation à ce sujet dans /usr/share/doc/rsyslog-doc-[version]
(attention, il y en a aussi un /usr/share/doc/rsyslog-[version]
, mais c'est juste des remarques du paquet source comme NEWS
et ChangeLog
). Si c'est le cas, c'est du HTML, mais Stack Exchange ne permet pas d'incorporer des liens de fichiers locaux:
file://usr/share/doc/rsyslog-doc/index.html
Vous pouvez donc essayer de copier-coller. Si ce n'est pas le cas, il peut faire partie d'un package distinct qui n'est pas installé. Recherchez votre système d'emballage (par exemple, apt-cache search rsyslog | grep doc
).
La configuration est dans /etc/rsyslog.conf
, qui a une page de manuel man rsyslog.conf
, bien que bien que la page de manuel fasse une référence fine, elle peut être moins pénétrable en introduction. Heureusement, les principes fondamentaux du stock rsyslog.conf sont conformes à ceux du syslog.conf traditionnel, pour lequel il existe de nombreuses introductions et tutoriels. Celui-ci , par exemple; ce que vous voulez retirer de cela, tout en regardant votre rsyslog.conf local, c'est une compréhension des installations et des priorités (la "priorité" est parfois appelée niveau de journal), car ceux-ci font partie de la norme syslog susmentionnée. La raison pour laquelle cette norme est importante est que rsyslog obtient réellement ses informations via le noyau, et ce que le noyau implémente est la norme.
En ce qui concerne les $
directives dans rsyslog.conf, ce sont spécifiques à rsyslog et si vous installez ce paquet doc facultatif, vous trouverez un guide pour les utiliser rsyslog_conf_global.html
.
Amusez-vous ... si vous êtes curieux de savoir comment les applications utilisent l'enregistreur système, regardez man logger
et man 3 syslog
.
Rotation du journal
Le moyen normatif de faire tourner les journaux se fait via un outil appelé logrotate
(et il y en a un man logrotate
). La méthode normative d'utilisation de logrotate est via le démon cron , bien que cela ne doive pas être fait de cette façon (par exemple, si vous avez tendance à éteindre votre bureau tous les jours, vous pourriez aussi bien le faire une seule fois au démarrage avant le démarrage de syslog mais, évidemment, une fois le système de fichiers monté rw).
Il y a une bonne introduction à logrotate ici . Notez que logrotate n'est pas seulement pour les trucs syslog , il peut être utilisé avec n'importe quel fichier. Le fichier de configuration de base l'est /etc/logrotate.conf
, mais comme la configuration a une directive "include", la plupart des choses vont généralement dans des fichiers individuels dans le /etc/logrotate.d
répertoire (ici d est pour le répertoire, pas pour le démon; logrotate n'est pas un démon).
Une chose importante à considérer lors de l'utilisation de logrotate est de savoir comment une application réagira lorsque son fichier journal sera "tourné" - en d'autres termes, déplacé - pendant que l'application est en cours d'exécution. WRT (r) syslogd, il cessera simplement d' écrire dans ce journal (je pense qu'il y a une justification de sécurité à cela). La manière habituelle de traiter cela est de dire à syslog de redémarrer (et de rouvrir tous ses fichiers), c'est pourquoi vous verrez une postrotate
directive dans les fichiers conf de logrotate envoyant SIGHUP au démon syslog.