2015-11-09 67 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> 

所以我會將此標記爲已解決。