Сопоставьте имя источника в nxlog в syslog-ng
Этот сводит меня с ума. Как мне перенаправить сообщение из nxlog, полученное syslog-ng на основе имени программы? Это должно быть само за себя, но это не работает правильно. Сообщения сбрасываются в мой общий файл журнала для syslog-ng без применения фильтрации.
Я отправляю журналы IIS вот так с nxlog:
<Input W3SVC>
Module im_file
...
Exec $SourceName = 'IIS';
...
</Input>
<Route W3SVC>
Path W3SVC => IIS_Syslog
</Route>
<Output IIS_Syslog>
Module om_udp
Host xxx
Port xxx
Exec to_syslog_ietf();
</Output>
Который отправляет на сервер syslog-ng, который должен перехватить следующий фильтр.
filter f_iis {
source ('IIS');
};
или в качестве альтернативы я попробовал следующее.
filter f_iis {
program ('IIS');
};
1 ответ
Решение
Если вы отправляете его как обычный системный журнал (т.е. используя to_syslog_bsd()
в nxlog.conf
) затем значение $ SourceName (=IIS
) будет в сообщении в той части, которую вызывает RFC3164 TAG
:
The value in the TAG field will be the name of the program or
process that generated the message.
Системный журнал называет это program
Поэтому я считаю, что второй должен делать то, что вам нужно:
filter f_iis {
program ('IIS');
};