Credit : Illustration backtotheweb.fr
Les logs Linux : ou chercher et comment les lire
Les logs Linux : ou chercher et comment les lire
Savoir lire les logs est la competence numero un pour debugger un serveur. Voici ou trouver les informations et comment les exploiter.
Arborescence /var/log
Les principaux fichiers de logs :
/var/log/
├── syslog # Messages systeme generaux
├── auth.log # Authentification (SSH, sudo, PAM)
├── kern.log # Messages du noyau
├── dpkg.log # Installations/mises a jour de paquets
├── apt/history.log # Historique apt
├── nginx/
│ ├── access.log # Requetes HTTP recues
│ └── error.log # Erreurs Nginx
├── apache2/
│ ├── access.log
│ └── error.log
├── mysql/
│ └── error.log # Erreurs MariaDB/MySQL
├── php8.2-fpm.log # Erreurs PHP-FPM
├── fail2ban.log # Bans fail2ban
└── cron.log # Executions cron (ou dans syslog)
journalctl : le journal systemd
journalctl est l'outil principal sur les distributions modernes :
# Voir tous les logs recents
journalctl -e
# Logs d'un service specifique
journalctl -u nginx
journalctl -u php8.2-fpm
journalctl -u mysql
# Logs depuis une date
journalctl --since "2026-04-07 10:00"
journalctl --since "1 hour ago"
journalctl --since today
# Logs entre deux dates
journalctl --since "2026-04-07 08:00" --until "2026-04-07 12:00"
# Suivre en temps reel (comme tail -f)
journalctl -u nginx -f
# Logs du noyau uniquement
journalctl -k
# Logs du dernier boot
journalctl -b
# Logs de priorite erreur et superieure
journalctl -p err
# Format JSON pour traitement automatise
journalctl -u nginx --output json-pretty
Lire auth.log : detecter les intrusions
# Tentatives SSH echouees
grep "Failed password" /var/log/auth.log | tail -20
# Compter les echecs par IP
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head
# Connexions SSH reussies
grep "Accepted" /var/log/auth.log | tail -20
# Utilisation de sudo
grep "sudo" /var/log/auth.log | tail -20
Lire les logs Nginx
Format par defaut du access.log :
203.0.113.50 - - [07/Apr/2026:14:30:00 +0200] "GET /article/123 HTTP/1.1" 200 4523 "https://google.fr" "Mozilla/5.0..."
Commandes utiles :
# Les 10 IP les plus actives
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
# Les pages avec erreur 404
awk '$9 == 404' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
# Les erreurs 500
awk '$9 == 500' /var/log/nginx/access.log
# Requetes par heure
awk '{print $4}' /var/log/nginx/access.log | cut -d: -f1-2 | sort | uniq -c
# Erreurs Nginx recentes
tail -50 /var/log/nginx/error.log
Attention : vérifiez bien deux fois avant d'appliquer en production.
Lire les logs MySQL
# Erreurs recentes
sudo tail -50 /var/log/mysql/error.log
# Activer le slow query log
mysql -u root -p -e "SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 2;"
# Analyser les requetes lentes
mysqldumpslow -s c /var/log/mysql/mysql-slow.log
Logrotate : eviter que les logs remplissent le disque
Logrotate compresse et archive automatiquement les logs. Configuration dans /etc/logrotate.d/ :
# Voir la config Nginx
cat /etc/logrotate.d/nginx
Creer une config personnalisee /etc/logrotate.d/monapp :
/var/log/monapp/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
postrotate
systemctl reload monapp > /dev/null 2>&1 || true
endscript
}
Testez la rotation :
sudo logrotate -d /etc/logrotate.d/monapp
sudo logrotate -f /etc/logrotate.d/monapp
Surveillance centralisee
Pour plusieurs serveurs, envisagez une solution centralisee :
# Envoyer les logs vers un serveur rsyslog distant
# Dans /etc/rsyslog.d/50-remote.conf :
*.* @@logserver.monsite.fr:514
Commandes de survie
# Espace disque utilise par les logs
du -sh /var/log/*
# Chercher un mot dans tous les logs
grep -r "error" /var/log/ --include="*.log" -l
# Suivre plusieurs logs simultanement
tail -f /var/log/nginx/error.log /var/log/php8.2-fpm.log
Les logs sont votre meilleur allie pour diagnostiquer les problemes. Prenez l'habitude de les consulter regulierement.
Vous avez une astuce à ajouter ? Contactez-nous, on l'ajoutera avec plaisir.