en savoir plus sur la journalisation générale / logrotation sur linux?


13

Supposons qu'à côté des journaux du serveur Web Apache, je n'ai jamais eu de contact avec aucun type de journaux (professionnels) sur un système d'exploitation. Donc, la journalisation, bien que je comprenne certaines bases, est un tout nouveau sujet. Pour le moment, l'investissement pour apprendre pleinement sur ce sujet semble être assez énorme, mais je ne sais même pas encore, s'il vaut même la peine d'en savoir plus, alors les concepts les plus abstraits.

Quelles ressources suggéreriez-vous si quelqu'un dans cette situation consommait (tutoriels, pages de manuel, livres) pour en savoir plus sur la journalisation?

Quels journaux un utilisateur Linux normal devrait-il lire quotidiennement / mensuellement? 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?

Que doivent savoir les utilisateurs et développeurs de logiciels normaux * nix sur ces journaux?

Que devez-vous savoir sur la rotation des journaux, si vous n'êtes pas censé gérer des serveurs Web professionnels avec d'énormes charges d'événements?


Cela vous dérange si je (ou vous) éditez le titre pour lire "sous linux" au lieu de "sous ubuntu" car ce sont essentiellement la même question (voir ma réponse)? De cette façon, nous sommes moins susceptibles de nous retrouver avec des questions en double fermées sur "l'apprentissage de la journalisation sur arch", "l'apprentissage de la journalisation sur centOS", etc.
goldilocks

Cela ne me dérange pas ce genre de changements, tant que les réponses sont bonnes :)
erikbwork

Réponses:


18

[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 NEWSet 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 loggeret 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.dré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 postrotatedirective dans les fichiers conf de logrotate envoyant SIGHUP au démon syslog.


2
Si vous mentionnez syslog-ngaussi, vous aurez écrit tout ce qu'il y a à dire sur linux-logging. Excellente réponse.
Nils

J'ai beaucoup appris et j'ai plus de sources à lire. Merci! Btw. Pourquoi serait-il mauvais d'utiliser la journalisation système pour Apache? Et quels journaux devrais-je lire?
erikbwork

@ erikb85 1) Principalement parce qu'apache génère beaucoup de sortie. Je n'ai pas eu à configurer apache depuis longtemps, donc je ne me souviens pas à quel point il est flexible WRT pour envoyer des choses spécifiques à syslog (mais je suppose que c'est très flexible) 2) Les journaux WRT que vous voulez lire, regardez à la logique de votre /etc/rsyslog.conf. Par exemple: souvent des choses au - dessus d' une certaine priorité iront /var/log/messages, et des choses en dessous qui iront /var/log/notice. J'aime aussi avoir un journal qui contient tout, ce qui permet un double et un triple chevauchement, mais si vous les maintenez en rotation, ce n'est pas grave.
goldilocks

Juste pour confirmer, rsyslogn'est-ce pas un wrapper démon logrotate, non? Pourquoi
Thomas

@Thomas Ils remplissent des fonctions différentes, bien que (r) syslog puisse implémenter la rotation pour épargner le besoin de logrotate. Cependant, les avoir séparés signifie que vous pouvez utiliser logrotate sur d'autres choses que les fichiers syslog.
goldilocks
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.