Logging
Fluentd 沒有將 apache 訪問日誌寫入 mongodb
我正在按照此連結中的說明將 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。