2015-11-09 21 views
0

我有点困难,设置fluentd来转发虚拟主机的httpd访问日志。我有五个虚拟主机,我希望为每个虚拟主机记录访问和错误,其次,让这些文件尾随并且将日志转发到日志记录服务器。第一个没有问题,但第二个是。fluentd日志未被转发到日志服务器的httpd虚拟主机

使用此conf文件,来自所有虚拟主机的所有httpd日志都将写入单个文件并正确转发给日志记录服务器。

<source> 
    type tail 
    format apache2 
    tag apache.access 
    path /var/log/apache/access_log 
    pos_file /var/log/apache/access_log.pos 
</source> 

<match apache.access> 
    type forward 
    send_timeout 60s 
    recover_wait 10s 
    heartbeat_interval 1s 
    phi_threshold 16 
    hard_timeout 60s 
    <server> 
    name internal-1 
    host 192.168.0.245 
    port 24224 
    </server> 
</match> 

但是,当我改变路径到日志文件中的httpd-vhosts.conf这样的:

CustomLog "/var/log/apache/internal-wiki/access_log" combined 

和变化TD-agent.conf这样:

<source> 
    type tail 
    format apache2 
    tag internalwiki.access 
    path /var/log/apache/internal-wiki/access_log 
    pos_file /var/log/apache/internal-wiki/access_log.pos 
</source> 

<match internalwiki.access> 
    type forward 
    send_timeout 60s 
    recover_wait 10s 
    heartbeat_interval 1s 
    phi_threshold 16 
    hard_timeout 60s 
    <server> 
    name internal-1 
    host 192.168.0.245 
    port 24224 
    </server> 
</match> 

日志已正确写入CustomLog,但未被转发到日志记录服务器。

TD-agent.log的输出是

2015-11-09 12:23:44 +0900 [warn]: no patterns matched tag="internalwiki.access" 

如果我改变匹配类型到stdout和尾TD-agent.log在本地机器上,这是好的。

TD-代理正在运行的服务器和文件的权限对根的666所以TD-代理应该能够读取访问日志

端口24224的日志服务器是开放的,我已经使用nmap检查,我可以telnet到端口24224并查看日志服务器上td-agent.log中的条目,因此网络没有问题。

那么,我做错了什么?

+0

所以如果你离开尾巴,只是改变匹配到标准输出是否有效? 如果它抱怨了标签,然后尝试将匹配标签设置为**以进行测试,并查看消息转发的标签。 – dutzu

+0

是的,stdout按预期工作。 apache访问日志聚集在本地机器上的td-agent.log中。在相同的问题中将匹配模式更改为**结果,日志不会转发到日志记录服务器。所以这会提示两台服务器之间的某种通信问题。但是,他们可以互相ping通,端口已打开,我可以通过Web服务器telnet到端口24224上的日志记录服务器,因此我无法看到通信的阻止位置。 –

回答

0

这是一个基本的错误... 网络服务器配置正确,但接收服务器不是。

我没有在日志服务器上的td-agent.conf中包括源和匹配模式。

添加这个解决了我的问题。

<source> 
    type forward 
</source> 
<match *.access> 
    type stdout 
</match> 

所以我会将此标记为已解决。