このリンクの指示に従って、Apacheアクセスログをmongo db- http://docs.fluentd.org/articles/Apache-to-mongodb に書き込みます。
しかし、mongoDBには何も書き込まれていません。 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>
Confファイルにエラーがあると/etc/init.d/td-agent start
が失敗するため、td-agentがこの構成ファイルを調べていることを知っています。
上記のpos_fileの内容は次のとおりです-
/var/log/httpd/access_log 0000000000000000 00000000
これが機能しない理由についてのヘルプを探しています。足りないものはありますか?
更新1:stdoutに書き込む上記のソース(Apacheアクセスログ)に一致するものを追加すると、ログに記録されているイベントを確認できます。 td-agentのログに。したがって、mongodbへの書き込みに問題があるようです。 mongo
コマンドを使用して、コマンドラインからmongoに接続できます。
更新2:突然これが機能し始め、理由を説明できません。出力をstdoutに一致させて戻すように、td-agent構成を変更しました。今、私は何が間違っていたのか、なぜそれが機能し始めたのかわかりません。 :(
ありがとう、
それは許可の問題であることが判明しました。後で機能した理由は、プロセスをrootとして実行するようにtd-agentinit.dスクリプトを変更したためです。デフォルトでは、ユーザーtd-agentとして実行され、その場合、ログファイルに権限666があるにもかかわらず、Apacheアクセスログファイルにアクセスする権限がないと文句を言います。