Linux

使用特定過濾器轉發消息

  • September 20, 2018

場景是接收所有傳入的消息並將所有這些消息儲存在 中/app/syslog-ng/custom/output/all_devices.log,但僅轉發某些消息(通過過濾)。

filter標籤用於過濾傳入的消息到 Syslog-NG,在這種情況下,這不是正確的用法。例如:filter f_warn { level(warn); };


編輯:

我目前的配置是:

@version: 3.17

source s_network {
       udp(
               flags(syslog_protocol)
               keep_hostname(yes)
               keep_timestamp(yes)
               use_dns(no)
               use_fqdn(no)
       );
};

destination d_all_logs {
       file("/app/syslog-ng/custom/output/all_devices.log");

};

log {
       source(s_network);
       destination(d_all_logs);
};

儲存所有消息後all_devices.log,Syslog-NG 是否提供語法(配置)以僅將某些消息(過濾後)轉發到遠端日誌伺服器?

您可以在配置文件中組合多個指令。

例如,根據您的程式碼,您定義一個過濾器:

filter f_warn { level(warn); };

然後是目的地:

destination remote_log_server {
udp("192.168.0.20" port(25214));
};

並將它們與以下內容放在一起:

log { source(src); filter(f_warn); destination(remote_log_server); };

顯然,您必須配置您的source,filterdestination根據您的需要。

我建議您仔細閱讀官方手冊,因為有很多選項可以自定義您的日誌記錄。

引用自:https://unix.stackexchange.com/questions/467359