Rsyslog kann nicht dazu gebracht werden, nur Nachrichten ohne Zeitstempel zu speichern

Rsyslog kann nicht dazu gebracht werden, nur Nachrichten ohne Zeitstempel zu speichern

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.

rawmsgSie 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.

verwandte Informationen