Nginxのログをfluentdで転送する

スポンサーリンク

ログを「見える化」する

仕事でログを見える化する必要がでてきた。昔、Treasure Dataのアカウントを作っていたことを思い出したので、試しにこのサイトのアクセスログをTreasure Dataで分析できるようにしてみた。

ログフォーマットは変更しない

ググってみると、そのものが見つかった。nginx + fluentd + TreasureData – Qiita。この通りfluentd(td-agent)を入れてみる。DBはTreasure Dataのコンソールからポチポチ。

記事の通りtd-agent.confも設定し、td-agentをスタートさせると、/var/log/td-agent/td-agent.logに


2017-10-22 11:55:04 +0900 [warn]: pattern not match: "216.xx.yyy.237 - - [22/Oct/2017:11:55:04 +0900] \"GET /archives/tag/rspec HTTP/1.1\" 301 178 \"-\" \"Mozilla/5.0 (compatible; xxxxxxx/1.1; http://www.example.org/xbot, help@example.com)\" \"-\""

と警告が出てデータが投入されない。「format nginx」って、Nginxのデフォルトのフォーマットではないのか?

Nginxのログフォーマットはそのままで処理したい。もう少しググってみて、nginx のログを fluentdに流す(pattern not match対策) – Qiitaという記事を発見。これに従ってformatを指定して、td-agentを再起動!


2017-10-22 12:12:01 +0900 [warn]: "164.xx.164.yy - - [22/Oct/2017:12:12:01 +0900] \
"GET /archives/date/2016/11 HTTP/1.1\" 200 7475 \"-\" \"Mozilla/5.0 (compatible; ExampleBot/5.2; +http://example.com/robot/)\" \"-\"" error="invalid time format: value = 22/Oct/2017:12:12:01 +0900, error_class = ArgumentError, error = argument out of range"

argument out of rangeと言われる。もう一度記事を確認すると、formatの他にtime_formatも指定している。time_formatもtd-agent.confに書き足して、再起動。

td-agentの設定で対処可能

システム構築後にfluentd(td-agent)を入れる場合、既存のログのフォーマットを変更するのは難しい。だが、td-agent.confで柔軟に設定を行うことができるため、Nginxのログはデフォルトのまま処理することができた。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

フォローする

この記事へのコメント

Loading Facebook Comments ...

No Trackbacks.