在一台虚拟机上我有这个/etc/rsyslog.d/50-default.conf
*.* @192.168.29.1:42185
# Default rules for rsyslog.
在装有 fluentd 的虚拟机上我有这个:
我有这个/etc/td-agent/td-agent.conf
<source>
type syslog
port 42185
tag rsyslog
</source>
<match rsyslog.**>
type copy
<store>
# for debug (see /var/log/td-agent.log)
type stdout
</store>
<store>
type elasticsearch
logstash_format true
flush_interval 10s # for testing.
</store>
</match>
但似乎没有任何东西被发送到远程机器,当我查看 /var/log/td-agent.log 时,我看到
2014-08-08 10:51:10 -0700 [info]: adding source type="syslog"
2014-08-08 10:51:10 -0700 [info]: adding source type="forward"
2014-08-08 10:51:10 -0700 [info]: adding source type="http"
2014-08-08 10:51:10 -0700 [info]: adding source type="debug_agent"
2014-08-08 10:51:10 -0700 [info]: adding match pattern="td.*.*" type="tdlog"
2014-08-08 10:51:10 -0700 [info]: adding match pattern="debug.**" type="stdout"
2014-08-08 10:51:10 -0700 [info]: adding match pattern="rsyslog.**" type="copy"
2014-08-08 10:51:10 -0700 [info]: listening fluent socket on 0.0.0.0:24224
2014-08-08 10:51:10 -0700 [info]: listening dRuby uri="druby://127.0.0.1:24230" object="Engine"
2
我不知道为什么日志没有被发送,也不知道如何判断是否有问题rsyslog
,只是没有发送文件。
答案1
如果我没记错的话,rsyslog 通过 TCP 转发日志(在配置文件中,这被列为“为了可靠性”),但 fluentD 的侦听器默认在 UDP 上侦听。对 fluentD 配置进行此更改应该允许您在 TCP 上接收日志:
<source>
type syslog
port 42185
protocol_type tcp
tag rsyslog
</source>
如果在进行此更改后仍未收到日志,我将使用 TCP dump 检查代理上是否正在接收流量:
tcpdump -i any port 42185
这还应表明是否正在接收 TCP 或 UDP(仅指定port
,而不是tcp
或udp
)
编辑:除此之外,请确保您的 rsyslog 配置正确:我所见过和使用过的所有示例,@@
在转发规则中都有一个重复:
*.* @@192.168.29.1:42185