/
/

Comprendre les logs Linux : présentation et exemples

par Team Ninja
Understanding Linux Logs blog image

La journalisation et les sorties de programme sont intégrées à l’ensemble du système Linux. Sous Linux, les logs constituent une source d’information essentielle sur les incidents de sécurité, l’activité des applications et les événements système. Bien gérer ses logs est indispensable pour diagnostiquer les problèmes et respecter les exigences de conformité. Cet article revient sur l’utilité de la journalisation et sur les principaux types de logs, puis présente quelques outils en ligne de commande et conseils pratiques pour gérer vos logs Linux.

Pourquoi la journalisation est essentielle

La journalisation offre une vue d’ensemble des applications et des processus que votre système exécute automatiquement en arrière-plan. Ces logs constituent une piste d’audit permettant de savoir ce qu’un système fait ou ne fait pas, ainsi que les succès et les erreurs générés au cours de ces activités. De nombreuses applications de l’écosystème Linux produisent une sortie lisible par un humain et, si cette sortie est redirigée vers un fichier de log, elle est automatiquement analysée par les outils intégrés au système Linux. Même si vous n’avez pas nécessairement besoin de consulter un log pour cela, récupérer des informations historiques qui ne figurent dans aucun log serait difficile, voire impossible.
Il faut souligner l’un des principaux bénéfices que cela apporte en entreprise. En reliant naturellement l’interface utilisateur à l’architecture système sous-jacente, la boucle de rétroaction se raccourcit pendant la phase de développement, et au-delà. Cela génère ensuite des données précieuses, transformables en informations exploitables tout au long du cycle de vie de votre application. Regardez Gestion des logs Linux : techniques et bonnes pratiques pour découvrir comment gérer et exploiter efficacement vos logs.

Les types de logs

  • Logs système : ils recueillent les informations relatives au système d’exploitation, comme les messages de démarrage, les événements matériels et l’activité du noyau.
  • Logs applicatifs : ils enregistrent les événements liés à un logiciel précis : messages de maintenance, erreurs, avertissements et activités des utilisateurs.
  • Logs de sécurité : ils assurent le suivi des événements liés à la sécurité : accès non autorisés, connexions habituelles et activité du pare-feu.

Chacun d’eux peut ensuite servir d’entrée ou de déclencheur pour des applications ou des scripts, y compris en intégration avec la plupart des logiciels de surveillance destinés aux grandes entreprises.

Les formats de logs syslog et journald

Les fichiers de logs peuvent être stockés dans différents formats, les deux plus courants étant les logs système journalisés (centralisés) et les logs en texte brut.
Traditionnellement, le format syslog est stocké sous forme de logs en texte brut, faciles à lire et à analyser. Ce format présente des avantages et des inconvénients, tout comme journald, qui stocke les logs dans un format binaire lisible avec la commande journalctl.
La plupart des distributions Linux modernes utilisent les logs journald de systemd, au moins pour leurs applications système essentielles. Le journal systemd offre plusieurs avantages : une journalisation centralisée, une surveillance en temps réel de données de logs structurées et indexées, ainsi qu’un chiffrement automatique des logs. En comparaison, la nature moins contraignante des logs Linux en texte brut peut sembler plus risquée à première vue. Ne vous y trompez pas : les logs en texte brut conservent de nombreux usages.
La plupart, voire la totalité, des fonctions intégrées à systemd, comme les systèmes de journalisation à distance, la surveillance centralisée, la rotation des logs et les sauvegardes, sont également proposées par d’autres paquets Linux standards. Un inconvénient de journald tient à son caractère monolithique, relativement « lourd » face aux outils Linux en ligne de commande, plus granulaires, utilisés pour manipuler les fichiers syslog, tels que grep, awk ou tail. Avec journald, à l’inverse, toutes les fonctions sont installées et actives : stockage, chiffrement, journalisation centralisée, rotation des logs et bien d’autres, que vous en ayez besoin ou non.

Comparatif des fonctions : journalisation syslog et journald

Fonctionsyslogjournald
Format de stockage Fichiers en texte brutFormat binaire avec données structurées
CompatibilitéLargement prise en charge par les différents outils de gestion des logsNécessite une intégration à systemd pour disposer de toutes les fonctions
Rotation des logsConfiguration manuelle de la rotation des logsRotation et compression automatiques des fichiers de logs
Gestion centraliséeDépend de serveurs et d’outils de logs externesPrise en charge native de la journalisation centralisée
Filtrage et analyseFonctions avancées de filtrage et d’analyse de texte issues de la chaîne d’outils Linux standardFiltrage et interrogation avancés avec journalctl
Efficacité de stockagePeut consommer davantage d’espace disque en raison du format texte brutStockage plus efficace grâce au format binaire et indexé
Surveillance en temps réelNécessite des outils externes ou un suivi des fichiers de logs avec tailSurveillance des logs en temps réel intégrée avec journalctl
FiabilitéExposé à la corruption ou à la perte des fichiers de logs en cas de plantageÉcritures atomiques et structure de fichier journal résiliente
ChiffrementDes mécanismes de chiffrement externes peuvent être nécessairesPrend en charge le chiffrement des données de logs

Filtrer et analyser les données de logs : exemples utiles

Exemples avec journald :

Exemple : journalctl -p err
Explication : filtre les logs du journal pour n’afficher que les entrées de niveau de gravité « err », qui correspondent aux erreurs. Vous pouvez ainsi vous concentrer sur les messages d’erreur et repérer rapidement les problèmes critiques dans les logs système.
Exemple : journalctl _SYSTEMD_UNIT=nginx.service
Explication : filtre les logs du journal pour afficher les entrées liées à nginx.service. Cela permet d’isoler les logs propres au serveur web Nginx, par exemple, et de diagnostiquer plus facilement les problèmes ou de surveiller son activité.
Exemple : journalctl --since "2023-07-21" --until "2023-07-22"
Explication : filtre les logs du journal pour afficher les entrées comprises entre les dates indiquées, ici du 21 juillet 2023 au 22 juillet 2023. Vous pouvez ainsi vous concentrer sur les entrées d’une période précise, ce qui facilite le débogage ou l’analyse des événements survenus à ce moment-là.

Exemples avec syslog :

Exemple : grep -i "warning" syslog.log | grep -v "deprecated"
Explication : effectue un filtrage en deux temps. La commande grep est d’abord utilisée avec l’option -i pour rechercher, en tenant compte de la casse, les lignes contenant la chaîne « warning » dans syslog.log, puis la sortie est transmise à une autre commande grep avec l’option -v, qui exclut les lignes contenant la chaîne « deprecated ». Vous filtrez ainsi les avertissements explicitement marqués comme obsolètes.
Exemple : grep 'string1|string2[|string3]' logfile.log
Explication : il s’agit en pratique d’une recherche de type OU avec grep. En utilisant des guillemets simples et en échappant le symbole pipe placé entre les chaînes, vous pouvez rechercher plusieurs chaînes dans une seule commande grep.

Autres conseils sur les outils de journalisation

Si les outils Linux standards servent au fonctionnement du système lui-même, il est aussi utile de les employer dans d’autres contextes :

  • logrotate : utile pendant la phase de développement de votre application pour gérer vos logs de débogage
  • tail -f : la commande « tail » affiche les 10 dernières lignes d’un fichier avant de se terminer. L’option « -f » permet de « suivre » le fichier de log : elle guette les nouvelles entrées et met l’affichage à jour à mesure que des lignes s’ajoutent.
  • multitail : affiche plusieurs fichiers de logs en temps réel dans des volets juxtaposés, pour les surveiller simultanément.

Dans cet article, nous avons abordé différents aspects de l’importance de la journalisation, comparé plusieurs types de logs et évoqué des usages moins courants de la journalisation dans votre propre travail. Nous avons également passé en revue plusieurs exemples de commandes et d’autres outils qui contribuent à une gestion efficace des logs Linux. Servez-vous des logs Linux pour suivre les informations relatives aux systèmes d’exploitation, aux applications et aux systèmes Linux, et mieux gérer vos terminaux Linux. Découvrez le logiciel de surveillance à distance et de gestion des terminaux de NinjaOne et comment il peut vous aider à gérer plus facilement vos appareils Linux distribués.

Regardez le guide vidéo Comprendre les logs Linux : présentation et exemples.

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?