Я пытаюсь настроить syslog-ng для правильного анализа сообщений, совместимых с RFC5424, но пока без особого успеха. Согласно документации syslog-ng,
Приложение syslog-ng OSE может автоматически анализировать сообщения журнала, соответствующие форматам сообщений RFC3164 (BSD или legacy-syslog) или RFC5424 (IETF-syslog). Если syslog-ng OSE не может проанализировать сообщение, это приводит к ошибке.
Это говорит о том, что syslog-ng не требует дополнительных параметров для фактического анализа этих сообщений. Однако это не так.
Вот соответствующая часть моей конфигурации syslog-ng:
template remote_message {
template("${R_ISODATE} s=${SDATA} mesg=${MSGONLY}\n");
};
source s_remote {
tcp(port(514));
syslog(transport(tcp));
};
destination d_remote {
file(
"/var/log/remote.log"
owner(root)
group(root)
create_dirs(yes)
template(remote_message)
);
};
log {
source(s_remote);
destination(d_remote);
};
Сервер прослушивает порт 514 и получает журналы из удаленных источников, но не анализирует их вообще. Отправив следующее сообщение (скопированное из текст RFC):
<165>1 2003-10-11T22:14:15.003Z sender.computer.org evententry - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] Test message
дает следующую запись журнала:
2016-04-26T16:22:31+02:00 s= mesg=2003-10-11T22:14:15.003Z sender.computer.org evententry - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] Test message
Как видите, сообщение вообще не анализируется. В отличие от документации, это не приводит к ошибке: согласно документации, если on-error
опция установлена на fallback-to-string
syslog-ng должен «записывать сообщение об ошибке во внутренний () источник», но такие журналы не создаются.
У меня такое чувство, что мне здесь не хватает чего-то очень простого, потому что это действительно должно сработать. Что мне не хватает?
ваш источник, похоже, немного неправильно настроен:
source s_remote {
tcp(port(514));
syslog(transport(tcp));
};
Фактически это два источника:
Поэтому, если вы отправляете сообщение RFC5424 на порт 601, оно должно работать (если только какой-либо брандмауэр не препятствует прослушиванию порта 601).
HTH,
Роберт Фекете