Logs et logrotate
Les logs sont la mémoire du système. Diagnostiquer un incident, auditer une connexion, comprendre un crash : tout passe par eux. Sur Debian 13, deux systèmes coexistent : journald (systemd, logs structurés en binaire) et les fichiers texte dans /var/log/.
journalctl : accéder aux logs systemd
journalctl # tous les logs
journalctl -f # suivi en temps réel (tail -f)
journalctl -u sshd # logs d'un service
journalctl -u nginx --since "1 hour ago"
journalctl -u nginx --since "2026-02-23 00:00" --until "2026-02-23 23:59"
journalctl -p err # uniquement les erreurs
journalctl -p warning..err # warning et au-dessus
journalctl -n 50 # 50 dernières lignes
journalctl --disk-usage # espace utilisé par journald
journalctl --vacuum-size=500M # nettoyer (garder 500M)Niveaux de priorité
De 0 à 7 : emerg, alert, crit, err, warning, notice, info, debug.
Fichiers dans /var/log/
Certains services écrivent directement dans des fichiers texte :
- /var/log/syslog : logs système généraux
- /var/log/auth.log : authentifications, sudo, SSH
- /var/log/kern.log : messages du noyau
- /var/log/dpkg.log : installations et suppressions de paquets
- /var/log/nginx/ : access.log et error.log (si Nginx installé)
tail -f /var/log/auth.log # surveiller les connexions
grep "Failed password" /var/log/auth.log # tentatives SSH échouées
grep "sudo" /var/log/auth.log # commandes sudo exécutéeslogrotate : rotation des logs
logrotate gère la rotation automatique des fichiers de log : compression, archivage, suppression des anciens fichiers. Configuration principale dans /etc/logrotate.conf, configurations par service dans /etc/logrotate.d/.
Structure d'une configuration
# /etc/logrotate.d/mon-service
/var/log/mon-service/*.log {
daily # rotation quotidienne
rotate 14 # garder 14 fichiers
compress # compresser les anciens (gzip)
delaycompress # ne pas compresser le dernier (en cours d'écriture)
missingok # ne pas échouer si le fichier est absent
notifempty # ne pas tourner si le fichier est vide
postrotate
systemctl reload mon-service
endscript
}Tester et forcer la rotation
logrotate -d /etc/logrotate.d/mon-service # simulation (dry run)
logrotate -f /etc/logrotate.d/mon-service # forcer la rotationEn pratique
Quand un service ne démarre pas, journalctl -u service -n 50 donne les 50 dernières lignes. Quand un serveur ralentit inexplicablement, journalctl -p err --since "1 hour ago" révèle souvent la cause. Sur un serveur de production, vérifier périodiquement journalctl --disk-usage : les logs journald grossissent sans rotation configurée. Pour les logs fichiers, tail -f /var/log/service/error.log donne un suivi temps réel.