Невозможно заставить rsyslog сохранять только сообщения без временной метки

Невозможно заставить rsyslog сохранять только сообщения без временной метки

При настройках по умолчанию мои логи выглядят так:

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"}

Но как только я пытаюсь заставить его записать только сообщение, он терпит неудачу.

и дает мне сообщение с обрезанным началом.

"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"}

Моя конфигурация Rsyslog:

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

local5.*                                               ?CustomLog;OnlyMsg

решение1

Входная строка на самом деле не стандартизирована для syslog, поэтому, например, строка, {"wfd_successful_hits_sec":вероятно, ошибочно принимается за тег, а поле msg находится после него.

Вероятно, вы можете просто использовать rawmsgсвойство вместо msg, так как оно содержит всю входную строку (после приоритета). Попробуйте начальное смещение около 40 символов, чтобы учесть временную метку и IP-адрес. Если у вас IP-адреса разной длины, вы можете использовать регулярное выражение вместо этого, чтобы сопоставить начало.

Связанный контент