Come configuro rsyslog per inviare registri da un programma specifico a un server syslog remoto?


17

Ho un programma che emette su syslog con un determinato nome tag / programma. Vorrei poter filtrare il traffico syslog da quel programma e inviarlo a un server remoto syslog, lasciando tutto il traffico syslog locale.

Posso inviare tutto il traffico al server remoto con

*.* @remote_server

Come posso filtrarlo?


Risposte:


37

I file di configurazione di Rsyslog si trovano in: /etc/rsyslog.d/*.conf

Rsyslog legge i file conf in sequenza, quindi è importante nominare il file di configurazione in modo che la configurazione specifica venga caricata prima che accada qualsiasi altra cosa. Quindi, dai un nome al tuo file iniziando con zero iniziali, ad es 00-my-file.conf. È meglio creare un nuovo file in modo che gli aggiornamenti e così via non sovrascrivano la configurazione locale.

Esempio:

if $programname == 'programname' and $msg contains 'a text string' and $syslogseverity <= '6' then /var/log/custom/bind.log

O se vuoi semplicemente scartare alcune voci:

if $programname == 'programname' then ~

Nel tuo caso: (UDP)

if $programname == 'programname' then @remote.syslog.server
& ~

Oppure (TCP)

if $programname == 'programname' then @@remote.syslog.server
& ~

Il & ~mezzo per interrompere ulteriormente l'elaborazione delle voci corrispondenti (solo riga precedente!).

Alcune informazioni più generali:

Inoltre, assicurati sempre che i filtri siano sulla stessa riga:

# Example: Log mail server control messages to mail-queue.log
if $hostname == 'titus'\
and $programname == 'smtp.queue.'\
and $syslogseverity <= '6' then /var/log/titus/mail-queue.log
& ~

Filtri utili:

$hostname
$programname
$msg
$syslogseverity

operatori:

== (equals)
contains
and
or

Maggiori informazioni: http://wiki.rsyslog.com/index.php/Configuration_Samples


1
possiamo riparare il link non funzionante?
Mark Walsh,

1

Possiamo anche provare questo. Funziona bene per me.

$template Incoming-logs,"/var/log/testing_docker/%PROGRAMNAME%.log"
if $programname startswith 'docker' then -?Incoming-logs

NOTA: qui la testing_dockerproprietà della cartella dovrebbe essere data all'utente syslog. Seguire il comando seguente per impostare le autorizzazioni.

chown syslog:syslog testing_docker
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.