Назад | Перейти на главную страницу

Сопоставьте 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'); 
};

Если вы отправляете его как обычный системный журнал (т. Е. Используя 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 называет это program, поэтому я считаю, что второй должен делать то, что вам нужно:

 filter f_iis {
     program ('IIS'); 
 };