SLBCloud
Intermédiaire7 min de lecture

Lire les journaux quand quelque chose ne va pas

journalctl, les fichiers de /var/log, et la méthode pour trouver la vraie erreur au lieu de la dernière ligne rouge.

Quand un service refuse de démarrer, la réponse est presque toujours écrite quelque part. Le problème n'est pas de trouver des messages, c'est de trouver le bon : la dernière ligne affichée est souvent une conséquence, pas la cause.

Les commandes qui servent vraiment

bash
journalctl -u nginx -n 50          # les 50 dernières lignes de nginx
journalctl -u nginx -f            # suivre en direct
journalctl -u nginx --since '10 min ago'
journalctl -p err -b              # toutes les erreurs depuis le démarrage
journalctl -b -1                  # le journal du démarrage précédent

Le journal du démarrage précédent

journalctl -b -1 est l'outil des redémarrages inexpliqués : il montre ce que la machine a écrit juste avant de s'arrêter. C'est là qu'on trouve un plantage du noyau ou un manque de mémoire.

La bonne méthode

  1. 1

    Remonter à la première erreur

    Cherchez le premier message d'erreur, pas le dernier. Une base de données qui refuse une connexion produit ensuite dix lignes d'échec applicatif : ce sont des conséquences.

  2. 2

    Regarder l'heure

    Recoupez l'horodatage avec le moment où le problème est apparu. Une erreur qui date de trois jours n'est probablement pas la vôtre.

  3. 3

    Vérifier la configuration avant de la charger

    La plupart des services savent se relire eux-mêmes et pointent la ligne fautive.

    bash
    sudo nginx -t
    sudo sshd -t
    sudo apachectl configtest

Les fichiers, pour ce qui n'est pas dans systemd

FichierCe qu'on y trouve
/var/log/nginx/error.logErreurs du serveur web : permissions, PHP, chemins
/var/log/auth.logConnexions et tentatives SSH, usages de sudo
/var/log/syslogMessages généraux du système (Debian, Ubuntu)
/var/log/mysql/error.logRefus de démarrage de la base
dmesg -TMessages du noyau : disque, mémoire, matériel

Empêcher les journaux de remplir le disque

Le journal systemd grossit sans limite par défaut sur certaines distributions. Une machine dont le disque se remplit sans raison apparente est souvent une machine qui garde six mois de journaux.

bash
journalctl --disk-usage
sudo journalctl --vacuum-time=14d      # ne garder que deux semaines
sudo journalctl --vacuum-size=500M     # ou un demi-gigaoctet

Bloqué malgré tout ? Ouvrez un ticket : on répond en français, et on regarde votre machine si besoin.

Ouvrir un ticket