come filtrare i messaggi rsyslog per tag


12

Ho diverse applicazioni e script che voglio reindirizzare l'output su file personalizzati.

Lancio quelle applicazioni usando

command | logger -t TAG

Vorrei filtrare questi messaggi in base ai loro tag e reindirizzarli su file diversi. Non voglio usare il reindirizzamento bash in quanto tali applicazioni sono principalmente processi di lunga durata e richiedono una corretta rotazione del registro.

Ho provato ad aggiungere un filtro personalizzato in /etc/rsyslog.d/60-myfilter.conf;

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

Che cosa sto facendo di sbagliato ? Qual è il modo corretto di filtrare in base al tag o esiste un'opzione migliore per ottenere risultati simili?

Risposte:


21

Non ho usato se così (o syslogtag) ma ho usato :<blah>,<condition> ...(in particolare: msg, contiene, ...) ma prova

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

Il & stop(Oppure, & ~in rsyslog v6 e precedenti (come su RHEL6)) fa sì che il messaggio corrispondente venga scartato dopo la registrazione, altrimenti verrà ulteriormente analizzato da altre regole.


Aggiornamento: testato e

Il syslogtag contiene un :e dovrebbe essere racchiuso tra ""anziché''


Grazie per la risposta. Ho appena provato quello che proponi, in effetti il ​​messaggio viene scartato ma non viene mai scritto/var/log/giomanager.log
mistyrouge,

@mistyrouge: vedi il mio aggiornamento
user9517

2
Grazie mille, ora ho reindirizzato il mio registro /var/log/giomanager.log ma è ancora scritto in / var / log / syslog. Hai un'idea del perché questo accada e come prevenirlo?
mistyrouge,

1
l'azione di eliminazione (indicatore ~) è obsoleta: è stata sostituita dall'istruzione
Ivan Rave,

7

Così ho finalmente trovato una soluzione al mio problema.

Grazie mille a @lain per avermi guidato.

La soluzione di cui sopra è includere un ':' nel nome del tag. Inoltre, e questo è molto importante, il nome del file deve essere prima 50-default.confin ordine alfabetico.

Per riprendere, inserisci quanto segue 30-giomanager.conf:

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

Si noti che il file /var/log/giomanager.logdeve essere scrivibile dall'utente 'syslog'.


Grazie @mistyrouge. Ho lo stesso problema che hai avuto. Dopo aver effettuato l'accesso al file corretto, i miei registri vengono reindirizzati a / var / log / syslog. Hai un'idea del perché questo accada e come prevenirlo?
Mayank Patel,

Non sono riuscito a farlo funzionare per filtrare i log di bind9. Invece, ': nome programma, isequal, "named" /var/log/named/named.log' funziona. Probabilmente perché il tag è come "named [32193]".
Rennex,

È possibile utilizzare startswithinvece isequalse, ad esempio, il tag contiene un PID. O regexper partite complesse.
Tim Sylvester,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.