No se puede hacer que rsyslog guarde solo el mensaje sin marca de tiempo

No se puede hacer que rsyslog guarde solo el mensaje sin marca de tiempo

Cuando tengo la configuración predeterminada, mis registros son así:

2020-12-01T18:34:06+02:00 10.132.90.194 {"wfd_successful_hits_sec": "0", "sql_hits_sec_max": "0", "timestamp": "2020/12/01 18:34:01", "connection_sec_max": "1922", "http_hits_sec_max": "1106", "http_hits_sec": "106", "wfd_successful_hits_sec_max": "0", "sql_hits_sec": "0", "sql_audit_phase2_events_sec_max": "0", "hdfs_hits_sec": "0", "connection_sec": "26"}

Pero tan pronto como intento que escriba solo el mensaje, falla.

y me da el mensaje con el principio recortado.

"0", "timestamp": "2020/12/01 18:34:01", "connection_sec_max": "1922", "http_hits_sec_max": "1106", "http_hits_sec": "106", "wfd_successful_hits_sec_max": "0", "sql_hits_sec": "0", "sql_audit_phase2_events_sec_max": "0", "hdfs_hits_sec": "0", "connection_sec": "26"}

Mi configuración de Rsyslog:

$template OnlyMsg,"%msg:2:2048%\n"
$template CustomLog,"/logs/host-%fromhost%-%$year%-%$month%.log"

local5.*                                               ?CustomLog;OnlyMsg

Respuesta1

La línea de entrada no está realmente estandarizada para syslog, por lo que, por ejemplo, la cadena {"wfd_successful_hits_sec":probablemente se esté confundiendo con la etiqueta y el campo msg está después de esto.

Probablemente puedas simplemente usar la rawmsgpropiedad en lugar de msg, ya que contiene toda la línea de entrada (después de la prioridad). Pruebe con un desplazamiento inicial de unos 40 caracteres para tener en cuenta la marca de tiempo y la dirección IP. Si tiene direcciones IP de diferentes longitudes, puede usar una expresión regular para que coincida con el inicio.

información relacionada