4

我们正在使用syslog-ng通过 将访问日志文件发送到远程服务器tcp。而且我已经知道可以配置多个目的地来完成这项工作,就像:

source s_xxx { file("/xxx/access.log"); };
destination d_one {tcp("1.2.3.4", port(1234));};  
destination d_two {tcp("1.2.3.5", port(1234));};
log {source(s_xxx); destination(d_one); destination(d_two);};

我要弄清楚的是如何将我的内容轮询到这两个目的地(例如循环)。换句话说,我的内容要么发送到d_one要么d_two,而不是两者。

非常感谢。

4

2 回答 2

5

我的场景非常相似:我有一个 syslog-ng 收集器,可以将消息转发到分析应用程序。它变得超载,我需要分担负载。我对要过滤的流量没有要求,也不想维护类型列表。我只是想按照您的要求逐个消息地进行循环。我决定使用 mod(%) 来实现这一点。

Syslog-ng OSE v3.7.2:

destination d_net_qr1 { network("ip1"); };
destination d_net_qr2 { network("ip2"); };

filter f_qr1     { "$(% ${RCPTID} 2)"  eq "0"  };
filter f_qr2     { "$(% ${RCPTID} 2)"  eq "1"  };

log { source(s_net); filter(f_qr1); destination(d_net_qr1); };    
log { source(s_net); filter(f_qr2); destination(d_net_qr2); };
于 2015-12-09T22:51:25.323 回答
0

syslog-ng 开源版目前没有直接的方式以循环方式发送消息。如果您想为负载平衡执行此操作,您可能会想出一个过滤器,使用 $SEC 宏每隔几秒在目标之间切换一次并比较宏值,请参阅http://www.balabit.com/sites/默认/文件/文档/syslog-ng-ose-3.6-guides/en/syslog-ng-ose-v3.6-guide-admin/html/filters-comparing.html

高温下,

问候,

罗伯特

于 2015-01-26T08:59:15.447 回答