Logging

Fluentd 沒有將 apache 訪問日誌寫入 mongodb

  • February 9, 2015

我正在按照此連結中的說明將 apache 訪問日誌寫入 mongo db- http://docs.fluentd.org/articles/apache-to-mongodb

但是沒有任何東西被寫入 mongo DB。我正在檢查使用db["access"].findOne();.

我的td-agent.conf文件內容如下-

<source>
 type tail
 format apache2
 path /var/log/httpd/access_log
 pos_file /var/log/td-agent/apache2.access_log.pos
 tag mongo.apache.access
</source>

<match mongo.*.*>
 # plugin type
 type mongo

 # mongodb db + collection
 database apache
 collection access

 # mongodb host + port
 host localhost
 port 27017

 # interval
 flush_interval 10s

 # make sure to include the time key
 include_time_key true
</match>

我知道 td-agent 正在查看此配置文件,因為/etc/init.d/td-agent start如果 conf 文件中有錯誤,則會失敗。

提到的 pos_file 的內容如下 -

/var/log/httpd/access_log   0000000000000000    00000000

我正在尋求有關為什麼這可能不起作用的幫助。有什麼我想念的嗎?

更新 1: 如果我為寫入 stdout 的上述源(apache 訪問日誌)添加匹配項,我可以看到事件被記錄到 td-agent 的日誌中。因此,寫入 mongodb 似乎是一個問題。我可以使用該mongo命令從命令行連接到 mongo。

更新 2: 突然之間,這開始起作用了,我無法解釋為什麼。我剛剛更改了 td-agent 配置以將輸出與 stdout 匹配並返回。現在我不知道出了什麼問題或為什麼它開始起作用。:(

謝謝,

原來是權限問題。它後來起作用的原因是我更改了 td-agent init.d 腳本以以 root 身份執行該程序。預設情況下,它以使用者 td-agent 身份執行,在這種情況下,它抱怨它沒有訪問 apache 訪問日誌文件的權限,即使日誌文件具有權限 666。

引用自:https://serverfault.com/questions/656289