Quando tenho as configurações padrão, meus logs ficam assim:
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"}
Mas assim que tento escrever apenas a mensagem, ele falha.
e me dá a mensagem com o início cortado.
"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"}
Minha configuração do Rsyslog:
$template OnlyMsg,"%msg:2:2048%\n"
$template CustomLog,"/logs/host-%fromhost%-%$year%-%$month%.log"
local5.* ?CustomLog;OnlyMsg
Responder1
A linha de entrada não é realmente padronizada para syslog, então, por exemplo, a string {"wfd_successful_hits_sec":
provavelmente está sendo confundida com a tag, e o campo msg vem depois disso.
Provavelmente você pode simplesmente usar a rawmsg
propriedade em vez de msg
, pois ela contém toda a linha de entrada (após a prioridade). Tente um deslocamento inicial de cerca de 40 caracteres para contabilizar o carimbo de data/hora e o endereço IP. Se você tiver endereços IP de comprimentos diferentes, poderá usar um regexp para corresponder ao início.