(Centos 7.x)
У меня есть настройка syslog-ng для анализа сообщений snmptrapd, чтобы я мог их отформатировать для дальнейшего использования. Проблема в том, что syslog-ng выводит только сообщение n-1. IE, если в snmptrapd.log 10 строк, syslog-ng выводит только 9 строк. Если я отправлю новое сообщение в snmptrapd (сообщение № 11), то syslog-ng выведет 10-е сообщение.
syslog-ng.conf:
@version:3.27
@include "scl.conf"
log {
source {
snmptrap(filename("/var/log/snmptrapd.log"));
};
destination {
file("/var/log/syslog-ng.log");
};
};
snmptrapd.conf:
authCommunity log,execute,net public
authCommunity log,execute,net localtrap
format2 %.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b]:\n%v\n
outputOption s
Я пробовал добавить дополнительную строку в конец format2 но это не помогает. (хотя snmptrapd.log получает дополнительную строку)
В настоящее время snmptrap()
source реализован как источник файла, который анализирует вывод snmptrapd. Журналы snmptrapd многострочные, конец данного сообщения определяется по префиксу предстоящего сообщения, отсюда и непредвиденное поведение. Это уродливые детали реализации (ограничения) этого плагина, в конечном итоге он может быть заменен подходящим источником прерывания SNMP.
В качестве обходного пути вы можете установить multi-line-timeout(10)
для обработки последнего сообщения с задержкой в 10 секунд.