syslog-ng est un service de journalisation avancé qui remplace le syslog traditionnel. Il offre une flexibilité accrue, des filtres puissants, une rotation des logs et la possibilité de centraliser les logs depuis plusieurs sources. Ce tutoriel vous guide pas à pas dans l'installation et la configuration de syslog-ng sur Debian 13.
sudo.syslog-ng avec ses dépendances.active (running).
| Chemin | Rôle |
|---|---|
/etc/syslog-ng/syslog-ng.conf | Fichier de configuration principal. |
/etc/syslog-ng/conf.d/ | Répertoire pour les fichiers de configuration supplémentaires. |
/var/log/syslog-ng/ | Répertoire des logs (par défaut, les logs restent dans /var/log/). |
/etc/syslog-ng/scl.conf | Configuration du SCL (Syslog-ng Configuration Language). |
source) : définissent d'où viennent les logs.destination) : définissent où les logs sont envoyés.filter) : définissent quels logs sont traités.log) : lient les sources, les filtres et les destinations.
source s_sys { system(); internal(); };
destination d_auth { file("/var/log/auth.log"); };
filter f_auth { facility(auth); };
log { source(s_sys); filter(f_auth); destination(d_auth); };
source : définit les sources de logs (système, interne).destination : définit où stocker les logs (fichier, serveur distant, etc.).filter : sélectionne les logs (par facility, priorité, etc.).log : relie les éléments entre eux.
# Fichier principal : /etc/syslog-ng/syslog-ng.conf
@include "scl.conf"
@include "conf.d/*.conf"
source s_sys {
system();
internal();
};
destination d_auth {
file("/var/log/auth.log");
};
destination d_cron {
file("/var/log/cron.log");
};
destination d_daemon {
file("/var/log/daemon.log");
};
destination d_kern {
file("/var/log/kern.log");
};
destination d_messages {
file("/var/log/messages");
};
destination d_syslog {
file("/var/log/syslog");
};
filter f_auth { facility(auth, authpriv); };
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_messages { not facility(auth, authpriv, cron, daemon, kern); };
filter f_syslog { facility(daemon); };
log { source(s_sys); filter(f_auth); destination(d_auth); };
log { source(s_sys); filter(f_cron); destination(d_cron); };
log { source(s_sys); filter(f_daemon); destination(d_daemon); };
log { source(s_sys); filter(f_kern); destination(d_kern); };
log { source(s_sys); filter(f_messages); destination(d_messages); };
log { source(s_sys); filter(f_syslog); destination(d_syslog); };
conf.d/
source s_app {
file("/var/log/mon-app.log");
};
destination d_app {
file("/var/log/mon-app-parsed.log");
};
filter f_app {
level(info);
};
log { source(s_app); filter(f_app); destination(d_app); };
@include "conf.d/*.conf".
destination d_central {
tcp("192.168.1.100" port(514));
};
log { source(s_sys); destination(d_central); };
source s_network {
tcp(ip(0.0.0.0) port(514));
udp(ip(0.0.0.0) port(514));
};
destination d_remote {
file("/var/log/remote/${HOST}/${FACILITY}.log");
};
log { source(s_network); destination(d_remote); };
${HOST} : variable qui sera remplacée par le nom de l'hôte source.${FACILITY} : variable pour la facility du log.logrotate pour la rotation des logs. Le fichier de configuration
se trouve dans /etc/logrotate.d/syslog-ng.
/var/log/syslog
/var/log/messages
/var/log/auth.log
/var/log/cron.log
/var/log/daemon.log
/var/log/kern.log
{
rotate 7
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/sbin/service syslog-ng reload > /dev/null 2>&1
endscript
}
rotate 7 : conserve 7 fichiers de logs archivés.weekly : rotation hebdomadaire.compress : compresse les logs archivés (gzip).postrotate : recharger syslog-ng après la rotation pour continuer à écrire les logs.🎉 Installation réussie si :
systemctl status syslog-ng affiche active (running).sudo syslog-ng -s ne retourne aucune erreur.ls -la /var/log/).