Сопоставьте SourceName, установленный в 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'); 
};
0
задан 31 January 2017 в 16:34
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.

Syslog-ng вызывает эту программу , поэтому я считаю, что вторая должна делать что вам нужно:

 filter f_iis {
     program ('IIS'); 
 };
1
ответ дан 4 December 2019 в 16:22

Теги

Похожие вопросы