CodeGym /Cours /Docker SELF /Journalisation et consultation des journaux système : com...

Journalisation et consultation des journaux système : commandes `journalctl`

Docker SELF
Niveau 3 , Leçon 1
Disponible

1. Pourquoi travailler avec des logs ?

Les journaux (ou logs) sont comme ton détective perso qui enregistre chaque opération importante dans le système. Ils consignent les actions du kernel, des applications, des services et d'autres composants du système. Les logs sont un outil essentiel pour diagnostiquer les problèmes et surveiller le fonctionnement du système.

Imagine que ton serveur cesse soudainement de répondre. Au lieu de jouer au Sherlock Holmes pour deviner ce qui aurait pu mal tourner, tu peux juste jeter un œil aux journaux — tout y est clairement documenté. Par exemple : "Le service ssh s'est planté", "Le disque est plein", "Le chat a couru sur le clavier et arrêté un service important". Les logs te racontent tout.

Travailler avec les journaux système aide à :

  1. Diagnostiquer les problèmes. Si quelque chose tourne mal, tu peux trouver une erreur ou un avertissement dans les logs.
  2. Surveiller le fonctionnement des services. Par exemple, savoir pourquoi la base de données PostgreSQL s'est arrêtée ou quand le serveur web a été mis à jour pour la dernière fois.
  3. Collecter des analyses. Monitorer les performances et les métriques des services.
  4. Renforcer la sécurité. Les logs peuvent montrer des tentatives de piratage via SSH ou des accès non autorisés.

2. Introduction à journalctl

journalctl — c'est une commande puissante pour consulter et filtrer les journaux système sous Linux. Elle fonctionne avec systemd-journald — le système de collecte et de stockage des logs, qui est géré par systemd.

Actions de base avec journalctl

Pour commencer, voyons comment utiliser cet outil. Ouvrez le terminal et tapez :

journalctl

Cette commande va vous afficher tous les journaux système, triés par ordre chronologique. Si vous vous attendez à voir quelque chose de modeste, préparez-vous : généralement, les logs occupent plusieurs écrans. Ne paniquez pas, on apprendra à les filtrer un peu plus tard.

Pour quitter la visualisation des journaux, appuyez sur q (vous avez remarqué la similarité entre less et journalctl, n'est-ce pas ?).


Filtrage des journaux par intervalle de temps

On va maintenant restreindre magiquement les journaux à un intervalle plus confortable.

Consulter les journaux de la dernière heure

journalctl --since "1 hour ago"

Consulter les journaux d'un jour spécifique

journalctl --since "2023-10-31"

Indiquer une plage de temps spécifique

Vous voulez voir les événements de 8h à 9h ? Pas de problème :

journalctl --since "2023-10-31 08:00:00" --until "2023-10-31 09:00:00"

Le filtrage par temps est utile, par exemple, si vous savez que le problème a commencé à un moment précis. Une analogie : vous ne lisez pas tout un livre pour savoir qui est le meurtrier — vous regardez simplement les dernières pages.


Travailler avec les journaux d'un service spécifique

Au lieu d'inspecter tout le système, vous pouvez vous concentrer sur un seul service. Par exemple, si vous voulez voir comment fonctionne le serveur web nginx :

journalctl -u nginx

Si vous voulez voir les entrées uniquement de la dernière heure (car on aime tous la fraîcheur de l'info) :

journalctl -u nginx --since "1 hour ago"

Liste rapide d'exemples :

  • -u ssh: Journaux pour le service SSH.
  • -u cron: Journaux des tâches CRON.
  • -u mysql: Journaux de la base de données MySQL.

Lire les journaux en temps réel

Quand vous réparez quelque chose en direct, il peut être utile de surveiller les journaux en temps réel — comme un match de foot. Pour cela, utilisez la commande :

journalctl -f

L'option -f fonctionne de manière similaire à tail -f, en affichant les nouvelles entrées des journaux au fur et à mesure de leur apparition.

Par exemple, essayez de lancer la commande et parallèlement redémarrez un service quelconque :

sudo systemctl restart ssh

Vous verrez les changements — une entrée concernant le redémarrage apparaîtra dans les journaux.


Rechercher des erreurs dans les journaux

Souvent, les journaux sont longs et chercher des infos manuellement revient à chercher une aiguille dans une botte de foin. C'est pourquoi vous pouvez utiliser une recherche par mots-clés.

Utilisation simple :

journalctl | grep "ERROR"

Dans cet exemple, seules les lignes contenant le mot ERROR seront affichées. Vous pouvez remplacer ERROR par ce que vous voulez, par exemple WARNING, failed ou panic.


3. Options spéciales pour journalctl

Voir les entrées uniquement après un redémarrage

Tu veux savoir ce qui s'est passé après le dernier démarrage du système ? Mystérieux, hein ? Fais simplement ceci :

journalctl -b

Chaque redémarrage du système est enregistré comme un "bloc" séparé. Si tu veux voir les entrées après l'avant-dernier redémarrage (oui, ça peut être utile) :

journalctl -b -1

Filtrage par utilisateur ou PID

Parfois, il faut suivre les actions d'un utilisateur ou d'un processus spécifique. Par exemple :

journalctl _UID=1000

Remplace 1000 par l'ID de l'utilisateur (tu peux trouver l'ID avec la commande id).

Pour filtrer par PID (identifiant du processus) :

journalctl _PID=1234

4. Exemples pratiques

  1. Recherche des erreurs du service SSH.

    Tu veux comprendre pourquoi SSH refuse de se connecter. Utilise :

    journalctl -u ssh | grep "ERROR"
    
  2. Analyse des journaux pour les dernières 24 heures pour CRON.

    Disons que tu vérifies pourquoi ton script quotidien n'a pas été exécuté :

    journalctl -u cron --since "yesterday"
    
  3. Surveillance en temps réel du serveur web.

    Ton serveur web est sous charge ? Vérifie les journaux pour des erreurs :

    journalctl -u nginx -f
    

Exercice pour pratique individuelle

  1. Trouve les journaux des erreurs pour le service SSH des dernières 24 heures.
  2. En utilisant journalctl, affiche les journaux pour CRON uniquement pour le matin. Assure-toi que la commande fonctionne avec le bon intervalle de temps.
  3. Organise une surveillance en temps réel des journaux systemd et lance plusieurs services système pour voir leur statut dans les journaux.

La journalisation n'est pas juste une question de répertoire d'erreurs ou de diagnostic de problèmes. C'est ton agent secret qui aide à surveiller tout ton système d'exploitation. Une fois que tu maîtrises la commande journalctl, tu as un outil puissant pour l'analyse, l'optimisation et pour assurer le fonctionnement stable d'une machine Linux dans n'importe quelle condition.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION