Fluentd + ElasticSearch + Kibana で nginx のログを可視化する

Posted by on January 29, 2015 in FreeBSD, Ruby, Tech

要約:
FreeBSD 10.0 にてデータ収集基盤を導入し,簡単な可視化を行った

言わずと知れた fluentd + ElasticSearch + Kibana の組み合わせでデータの可視化を行う.
Kibana でグラフを描くところまでのメモを以下に記す.

必要な諸々をインストール

FreeBSD であれば必要なものは pkg に一通り揃っている.

さらに fluentd から ElasticSearch にデータを渡すためのプラグインをインストールする.

次に,今インストールした諸々の設定を行う.

Fluentd

セットアップ

ホームディレクトリに設定ファイル等を作成する.

動作確認

Fluentd を起動後, fluent-cat に debug.test タグを付けたメッセージを投げてみる.

正常に動作していれば標準出力に下記のようなログが出力される.

Nginx のログを扱う

動作確認ができたところで fluent.conf を記述する.
まずは nginx のログを標準出力してみる.

fluent.conf に記述した pos_file を作成する.

ここで nginx のログが標準出力されることを確認する.

動作確認ができたら fluent.conf を修正する.
Nginx のログを標準出力ではなく ElasticSearch に渡すようにする.

rc.conf の設定

Fluentd の設定はここまで.次に ElasticSearch の設定を行う.

ElasticSearch

パスの設定

この設定は各人の環境に依存するため,人によってはデフォルト値で問題ない.

上記のディレクトリを作成する.

rc.conf の設定

ポート開放

ElasticSearch ではデフォルトで 9200 番ポートが使用される.
下記のポート開放手順は各人の環境に合わせて読み替えのこと.

ElasticSearch の設定はここまで.次に Kibana の設定を行う.

Kibana

必要に応じて Kibana のディレクトリをコピーする.
デフォルトのロケーションで動作させる場合にはこの手順は不要である.

nginx の設定

Nginx に Kibana のディレクトリ等の情報を設定する.

ElasticSearch の設定

ElasticSearch が動作しているホストとポートを設定する.

Kibana の設定はここまで.
以上で最低限の設定は終わったため,実際に動作させてみる.

データ可視化

rc script の起動

Kibana

Kibana にアクセスしたところ, Connection Failed と叱られた.

Error

Connection Failed

メッセージに従い elasticsearch.yml を修正し, ElasticSearch を再起動してアクセスすると,今度は上手くいった.

Top

Kibana 正常動作時のトップページ

Logstash Dashboard にアクセスすると,以下のようにデータが可視化された.

Visualization

データ可視化サンプル

終わりに

とりあえず fluentd + ElasticSearch + Kibana による可視化の第一歩を踏み出せた.どのようなデータを収集するか,そしてどのような観点で分析するかといったことは,今後少しずつ考えていく.