¿Cómo configuro rsyslog para enviar registros desde un programa específico a un servidor remoto de syslog?

17

Tengo un programa que sale a syslog con una etiqueta / nombre de programa dado. Me gustaría poder filtrar el tráfico de syslog de ese programa y enviarlo a un servidor de syslog remoto, dejando el resto del tráfico de syslog local.

Puedo enviar todo el tráfico al servidor remoto con

*.* @remote_server

¿Cómo lo filtro?

Simmo
fuente

Respuestas:

37

Los archivos de configuración de Rsyslog se encuentran en: /etc/rsyslog.d/*.conf

Rsyslog lee los archivos conf secuencialmente, por lo que es importante que asigne un nombre a su archivo de configuración para que la configuración específica se cargue antes de que ocurra cualquier otra cosa. Entonces, nombre su archivo comenzando con ceros a la izquierda, es decir 00-my-file.conf. Es mejor crear un nuevo archivo para que las actualizaciones, etc., no sobrescriban su configuración local.

Ejemplo:

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

O si solo desea descartar ciertas entradas:

if $programname == 'programname' then ~

En su caso: (UDP)

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

O (TCP)

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

Los & ~medios para dejar de procesar entradas coincidentes (¡solo en la línea anterior!).

Alguna información más general:

Además, siempre asegúrese de que los filtros estén en la misma línea:

# 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
& ~

Filtros útiles:

$hostname
$programname
$msg
$syslogseverity

Operadores:

== (equals)
contains
and
or

Más información: http://wiki.rsyslog.com/index.php/Configuration_Samples

olvido
fuente
1
podemos arreglar el enlace roto?
Mark Walsh
1

También podemos probar esto. Esta trabajando bien para mi.

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

NOTA: aquí la testing_dockerpropiedad de la carpeta debe otorgarse al usuario de syslog. Siga el siguiente comando para establecer permisos.

chown syslog:syslog testing_docker
Nagaraj
fuente