Сопоставьте имя источника в 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'); 
 };
Другие вопросы по тегам