我们正在使用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
,而不是两者都发送。
非常感谢。
答案 0 :(得分:3)
我的场景非常相似:我有一个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); };
答案 1 :(得分:0)
syslog-ng开源版目前没有一种直接的方式来以循环方式发送消息。如果你想为负载平衡做这个,你可以想出一个过滤器,它使用$ SEC宏每几秒钟在目标之间切换并比较宏值,参见http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.6-guides/en/syslog-ng-ose-v3.6-guide-admin/html/filters-comparing.html
HTH,
问候,
罗伯特