Wenn ich die Standardeinstellungen habe, sehen meine Protokolle folgendermaßen aus:
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"}
Aber sobald ich versuche, nur die Nachricht auszugeben, schlägt es fehl.
und gibt mir die Nachricht mit abgeschnittenem Anfang.
"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"}
Meine Rsyslog-Konfiguration:
$template OnlyMsg,"%msg:2:2048%\n"
$template CustomLog,"/logs/host-%fromhost%-%$year%-%$month%.log"
local5.* ?CustomLog;OnlyMsg
Antwort1
Die Eingabezeile ist für Syslog nicht wirklich standardisiert, daher {"wfd_successful_hits_sec":
wird beispielsweise die Zeichenfolge wahrscheinlich mit dem Tag verwechselt und das Nachrichtenfeld steht danach.
rawmsg
Sie können wahrscheinlich einfach die Eigenschaft anstelle von verwenden msg
, da sie die gesamte Eingabezeile (nach der Priorität) enthält. Versuchen Sie einen Startoffset von etwa 40 Zeichen, um den Zeitstempel und die IP-Adresse zu berücksichtigen. Wenn Sie IP-Adressen unterschiedlicher Länge haben, können Sie stattdessen einen regulären Ausdruck verwenden, um den Start abzugleichen.