Rsyslog imudp разбивает сообщение, содержащее двоеточие

У нас возникли проблемы с отправкой сообщений в rsyslog через imudp. Наше сообщение содержит двоеточие (":"), но imudp, похоже, использует его в качестве разделителя.

Можем ли мы отключить разграничение, чтобы все сообщение считывалось в одно поле?

Если это не из-за imudp, может ли кто-нибудь указать, где реальная проблема? Есть ли проблема с построением шаблона?

ВВОД
echo "deploys.test.myservice:4|c" | nc -w0 -u localhost 12345

ШАБЛОН RSYSLOG
template(name="json_lines" type="list" option.json="on") { constant(value="{ \"timestamp\":\"") property(name="timestamp" dateFormat="rfc3339") constant(value="\",\"message\":\"") property(name="msg") constant(value="\",\"host\":\"") property(name="hostname") constant(value="\",\"type\":\"") property(name="syslogtag") constant(value="\"}") }

ВЫВОД
{ "timestamp":"2016-11-22T16:15:15.773754+05:30", "message":"4|c", "host":"localhost", "type":"deploys.test.myservice:" }

Заранее спасибо!


person galactocalypse    schedule 23.11.2016    source источник


Ответы (2)


Отказ от ответственности: я все еще активно изучаю все тонкости rsyslog

Взгляните на модуль pmnull, если хотите принимать необработанные сообщения без какой-либо обработки.

Пример из документации:

module(load="imtcp")
module(load="pmnull")

input(type="imtcp" port="13514" ruleset="ruleset")
parser(name="custom.pmnull" type="pmnull")

ruleset(name="ruleset" parser="custom.pmnull") {
      action(type="omfile" file="rsyslog.out.log")
}

Предположительно, вы могли бы настроить ввод UDP так же, как ввод TCP, показанный здесь.

person deoren    schedule 21.08.2017
comment
Спасибо за ответ, @deoren, похоже, он будет делать то, что я хочу, но на данный момент я не могу его проверить, так как это было слишком долго, и у меня нет под рукой настройки. Попробую, как только найду свободные выходные. - person galactocalypse; 20.11.2017
comment
Пожалуйста. Если у вас возникнут проблемы с реализацией изменений, обратитесь к списку рассылки и форумы — хорошие ресурсы, а также сайты StackExchange здесь. - person deoren; 28.11.2017

Другой вариант — использовать «rawmsg» вместо «msg» в вашем шаблоне. Это более простой путь, чтобы попробовать.

Я не мог использовать опцию «pmnull», потому что rsyslog завершился со следующей ошибкой (подробнее ):

rsyslogd: не удалось загрузить модуль '/usr/lib64/rsyslog/pmnull.so', dlopen: /usr/lib64/rsyslog/pmnull.so: невозможно открыть общий объектный файл: нет такого файла или каталога [v8.36.0 try http://www.rsyslog.com/e/2066]

person lkancode    schedule 14.11.2018