La centralisation des logs est une pratique essentielle en administration système pour faciliter l'analyse, la surveillance et le dépannage. rsyslog est un outil puissant sous Linux permettant de collecter et de centraliser les logs depuis plusieurs serveurs vers un serveur unique.
Prérequis
- Deux serveurs Linux (Debian, Ubuntu, CentOS, Rocky Linux) :
- Un serveur central pour recevoir les logs
- Un ou plusieurs serveurs clients pour envoyer les logs
- Accès root ou sudo
1. Installation de rsyslog
Sur tous les serveurs (central et clients), installez rsyslog :
Debian/Ubuntu
sudo apt update
sudo apt install -y rsyslog
CentOS/RHEL/Rocky Linux
sudo dnf install -y rsyslog
2. Configuration du serveur central
Éditez /etc/rsyslog.conf
:
sudo nano /etc/rsyslog.conf
Décommentez les lignes suivantes pour activer la réception TCP et UDP :
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
Redémarrez rsyslog :
sudo systemctl restart rsyslog
3. Configuration des serveurs clients
Éditez /etc/rsyslog.conf
sur chaque client :
sudo nano /etc/rsyslog.conf
Ajoutez en fin de fichier pour envoyer les logs au serveur central (remplacer IP_SERVEUR
par l'IP réelle) :
*.* @IP_SERVEUR:514
Pour utiliser TCP (recommandé), utilisez :
*.* @@IP_SERVEUR:514
Redémarrez rsyslog sur chaque client :
sudo systemctl restart rsyslog
4. Vérification
Sur le serveur central, vérifiez les logs entrants dans /var/log/syslog
ou /var/log/messages
selon votre distribution :
tail -f /var/log/syslog
# ou
tail -f /var/log/messages
5. Organisation avancée des logs
Pour mieux organiser les logs sur le serveur central, créez des fichiers distincts par client en ajoutant une règle dans /etc/rsyslog.conf
:
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
Redémarrez rsyslog :
sudo systemctl restart rsyslog
6. Rotation et nettoyage des logs
Configurez logrotate
pour la gestion des fichiers log :
Créez /etc/logrotate.d/rsyslog-remote
:
sudo nano /etc/logrotate.d/rsyslog-remote
Ajoutez :
/var/log/remote/*/*.log {
daily
rotate 14
missingok
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl restart rsyslog > /dev/null
endscript
}
Conclusion
Vous avez maintenant un serveur rsyslog opérationnel pour centraliser efficacement les logs de vos serveurs Linux. Cette configuration facilite grandement la surveillance, l'analyse et le dépannage en centralisant toutes les informations critiques en un seul endroit.