Cómo filtrar los mensajes de rsyslog por etiquetas


12

Tengo varias aplicaciones y scripts que quiero redirigir la salida a archivos personalizados.

Lanzo esas aplicaciones usando

command | logger -t TAG

Me gustaría filtrar estos mensajes en función de sus etiquetas y redirigirlos a diferentes archivos. No quiero usar la redirección de bash ya que esas aplicaciones son principalmente procesos de larga duración y necesitan una rotación de registro adecuada.

He intentado agregar un filtro personalizado en /etc/rsyslog.d/60-myfilter.conf;

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

Qué estoy haciendo mal ? ¿Cuál es la forma correcta de filtrar en función de la etiqueta o hay una mejor opción para tener un resultado similar?

Respuestas:


21

No lo he usado así (o syslogtag) pero lo he usado :<blah>,<condition> ...(en particular: msg, contiene, ...) pero intente

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

El & stop(O, & ~en rsyslog v6 y versiones anteriores (como en RHEL6)) hace que el mensaje coincidente se descarte después de iniciar sesión; de lo contrario, otras reglas lo analizarán más.


Actualización: probado y

La etiqueta del sistema contiene un :y debe encerrarse en ""lugar de''


Gracias por su respuesta. Acabo de intentar lo que propones, de hecho, el mensaje se descarta pero nunca se escribe en/var/log/giomanager.log
mistyrouge

@mistyrouge: vea mi actualización
user9517

2
Muchas gracias, ahora tengo mi registro redirigido /var/log/giomanager.log pero todavía está escrito en / var / log / syslog. ¿Tienes una idea de por qué sucede esto y cómo prevenirlo?
mistyrouge

1
la acción de descarte (indicador ~) está en desuso: ha sido reemplazada por la (mejor) declaración alternativa "stop": kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

Así que finalmente encontré una solución a mi problema.

Muchas gracias a @lain por liderar mi camino.

La solución como se indicó anteriormente es incluir un ':' en el nombre de la etiqueta. Además, y esto es muy importante, el nombre del archivo debe estar antes 50-default.confen orden alfabético.

Para reanudar, ponga lo siguiente en 30-giomanager.conf:

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

Tenga en cuenta que el /var/log/giomanager.logusuario 'syslog' debe poder escribir el archivo .


Gracias @mistyrouge. Tengo el mismo problema que tuviste. Después de iniciar sesión en el archivo correcto, mis registros se redirigen a / var / log / syslog. ¿Tienes una idea de por qué sucede esto y cómo prevenirlo?
Mayank Patel

No pude hacer que esto funcione para filtrar los registros de bind9. En su lugar, ': programname, isequal, "named" /var/log/named/named.log' funciona. Probablemente porque la etiqueta es como "named [32193]".
Rennex

Puede usar en startswithlugar de isequalsi, por ejemplo, la etiqueta contiene un PID. O regexpara partidos complejos.
Tim Sylvester
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.