web-dev-qa-db-ja.com

FluentdがApacheアクセスログをmongodbに書き込まない

このリンクの指示に従って、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構成を変更しました。今、私は何が間違っていたのか、なぜそれが機能し始めたのかわかりません。 :(

ありがとう、

1
ksrini

それは許可の問題であることが判明しました。後で機能した理由は、プロセスをrootとして実行するようにtd-agentinit.dスクリプトを変更したためです。デフォルトでは、ユーザーtd-agentとして実行され、その場合、ログファイルに権限666があるにもかかわらず、Apacheアクセスログファイルにアクセスする権限がないと文句を言います。

1
ksrini