← retour aux snippets

rsyslog: filtrer et router par programname

Séparer les logs par application et les expédier vers des fichiers ou une destination distante.

bash monitoring #rsyslog#filter#logs

objectif

Mieux organiser les logs sans toucher au code des applis.

code minimal

# /etc/rsyslog.d/30-program.conf
if ($programname == 'nginx') then { action(type="omfile" file="/var/log/nginx/app.log") stop }

utilisation

sudo systemctl restart rsyslog
tail -f /var/log/nginx/app.log

variante(s) utile(s)

# envoi distant en TCP/TLS (destination déjà configurée)
if ($programname == 'myapp') then { action(type="omfwd" target="logs.data.pm" port="6514" protocol="tcp" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name") }

notes

  • syntaxe RainerScript; attention aux accolades et stop.
  • combinez avec templates pour format JSON.