comment filtrer les messages rsyslog par balises


12

J'ai plusieurs applications et scripts que je souhaite rediriger la sortie vers des fichiers personnalisés.

Je lance ces applications en utilisant

command | logger -t TAG

Je voudrais filtrer ces messages en fonction de leurs balises et les rediriger vers différents fichiers. Je ne veux pas utiliser la redirection bash car ces applications sont principalement des processus longs et nécessitent une rotation appropriée des journaux.

J'ai essayé d'ajouter un filtre personnalisé dans /etc/rsyslog.d/60-myfilter.conf;

if $syslogtag == 'giomanager' then /var/log/giomanager.log

Qu'est-ce que je fais mal ? Quelle est la bonne façon de filtrer en fonction de la balise ou existe-t-il une meilleure option pour obtenir un résultat similaire?

Réponses:


21

Je n'ai pas utilisé si comme ça (ou syslogtag) mais j'ai utilisé :<blah>,<condition> ...(en particulier: msg, contains, ...) mais essayez

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Le & stop(ou, & ~en v6 rsyslog et plus (comme sur RHEL6)) provoque le message adapté à être mis au rebut après la connexion sinon il sera encore analysé par d' autres règles.


Mise à jour: testé et

Le syslogtag contient un :et doit être inclus dans ""plutôt que''


Merci pour votre réponse. Je viens d'essayer ce que vous proposez, en effet le message est rejeté mais n'est jamais écrit/var/log/giomanager.log
mistyrouge

@mistyrouge: voir ma mise à jour
user9517

2
Merci beaucoup, j'ai maintenant mon journal redirigé vers /var/log/giomanager.log mais il est toujours écrit dans / var / log / syslog. Avez-vous une idée pourquoi cela se produit et comment l'éviter?
mistyrouge

1
l'action de suppression (indicateur ~) est déconseillée: a été remplacée par la (meilleure) alternative "stop": kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

J'ai donc finalement trouvé une solution à mon problème.

Merci beaucoup à @lain d'avoir ouvert la voie.

La solution comme indiqué précédemment consiste à inclure un «:» dans le nom de la balise. De plus, et c'est très important, le nom du fichier doit être avant 50-default.confdans l'ordre alphabétique.

Pour reprendre, mettez ce qui suit dans 30-giomanager.conf:

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Notez que le fichier /var/log/giomanager.logdoit être accessible en écriture par l'utilisateur «syslog».


Merci @mistyrouge. J'ai le même problème que toi. Après avoir ouvert une session dans le fichier correct, mes journaux sont redirigés vers / var / log / syslog. Avez-vous une idée pourquoi cela se produit et comment l'éviter?
Mayank Patel

Je n'ai pas pu faire fonctionner cela pour filtrer les journaux de bind9. Au lieu de cela, ': programname, isequal, "named" /var/log/named/named.log' fonctionne. Probablement parce que la balise est comme "nommé [32193]".
Rennex

Vous pouvez utiliser startswithau lieu de isequalsi, par exemple, la balise contient un PID. Ou regexpour les matchs complexes.
Tim Sylvester
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.