RSYSLOG: registrar la prioridad y facility de mensajes (PRI)

Uno de los problemas que encuentro a menudo administrando rsyslog es, que si es necesario hacer diagnóstico, se complica saber tanto la prioridad que tiene un determinado mensaje como su facility, lo comunmente llamado PRIORITY (PRI). Se puede averiguar a través de TCPDUMP analizando tráfico de red y probablemente también levantando en modo DEBUG rsyslog, pero hay formas más sencillas.

Por defecto, rsyslog no muestra la prioridad ni facility de un mensaje en los logs, siendo que es lo más importante a saber a la hora de establecer las opciones y configuraciones de filtrado.

Recordad que la «facility» indica quién o desde dónde se origina un mensaje (kernel, mail, aplicación…) mientras que la severidad especifica la criticidad del mensaje (INFO, ERROR, WARNING…). El problema de no registrar la PRI es que si no sabemos de dónde viene un determinado mensaje que vemos en un log (messages, syslog por ejemplo), hay que analizar e interpretar el archivo de configuración rsyslog.conf para averiguarlo o hacer lo comentado en el párrafo inicial.

Pero hay una forma más sencilla, se trata simplemente de modificar la plantilla que utilizamos en rsyslog para el registro de mensajes. Lo normal es tenerlo configurado así.

$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"

Hay que sustituirlo por:

$template TraditionalFormatWithPRI,"%pri-text%: %timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"

Esto hace que con esa plantilla se registre el valor «pri-text«, que contiene la información de PRI que necesitamos (se necesita rsyslog 1.13.4 o superior):

local2.err....
local6.info....

Una vez configurado esto, simplemente configura esa plantilla en la entrada de logs que quieras utilizarla, ejemplo:

*.* -/var/log/messages;TraditionalFormatWithPRI

Tras realizar el cambio, reiniciamos rsyslog y ya quedará registrado PRI:

# service rsyslog restart

Un ejemplo de como se vería el log:

daemon.info: Nov 19 15:30:48 foo-2 java:2019-11-19 15:30:48,336 INFO  [taskScheduler-5] c.s.p.p.c.: Kafka        Channel Send  Duration: [N=112737591, min=0.000135, max=14267.674701, mean=1.497987, sigma=3.910367]