きっかけ
fluentd
で集めたログを GUI で簡単に見ることが出来ないかと悩んでいたら、以下の参考にしたサイトのように良い事例があるではないですかということで早速チャレンジ。
参考にしたサイト
- Kibanaってなんじゃ?(Kibana+elasticsearch+fluentdでログ解析)
- Kibana + ElasticSearch + Fluentd を試してみた
- Elasticsearch入門 pyfes 201207
- http://blog.johtani.info/blog/2013/06/10/fluent-es-kibana/
- Kibana Installation
- rashidkpc/Kibana
うんちく
自分なりに整理した Elasticsearch
と kibana
について。
Elasticsearch
kibana
- Elasticsearch のフロントエンドとして動作する
- ログを検索したりトレンドをグラフ化する Web アプリケーション(以下はスクリーンショット)
設定
環境
- Debian 6.0.7
- 既に
td-agent
がインストール済み(fluentd 0.10.38) - 既に
Apache
もインストール済み
準備
openjdk-6-jdk のインストール
ElasticSearch
をいきなりインストールしようとしたところ、
Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME invoke-rc.d: initscript elasticsearch, action "start" failed.
Java
の実行環境が見つからないと怒られてしまったので openjdk-6-jdk
をインストールする。
sudo apt-get install openjdk-6-jdk
bundler のインストール
kibana
のセットアップには bundler
が必要なのでこやつもインストールしておく。
sudo gem install bundler --no-ri --no-rdoc -V
ElasticSearch の設定
インストール
deb
パッケージがあるのでそちらを利用させて頂く。
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.3.deb sudo dpkg -i elasticsearch-0.90.3.deb
ちょっと困った
ElasticSearch
の init
スクリプトで使われている start-stop-daemon
のオプションの一部が Debian 6.0.7
では非対応らしく、以下のようなエラーを吐いて ElasticSearch
が起動しない。
Starting ElasticSearch Server:start-stop-daemon: unrecognized option '--status' Try 'start-stop-daemon --help' for more information. start-stop-daemon: unrecognized option '--status' Try 'start-stop-daemon --help' for more information. failed!
仕方ないので以下のように修正して起動出来るようにした。ちなみに Debian 7
や Ubuntu 13.04
で使われている start-stop-daemon
では --status
オプションがサポートされているのでこの対応は不要。
kibana の設定
kibana ユーザーを作成
root
ユーザーで色々とやるのが嫌なので kibana
を動作させるユーザーを作る。
adduser kibana
一応、sudo
権限も与えておく。(後から削除しても良いかと。)
git clone
こちらを参考にして kibana
のリポジトリを clone してくる。
sudo su - kibana git clone --branch=kibana-ruby https://github.com/rashidkpc/Kibana.git
bundle install
bundle install
を実行する。
sudo bundle install
最後に以下のようなメッセージが表示される。
あわせて tzinfo-data
という gem
もインストールする。
sudo gem install tzinfo-data --no-ri --no-rdoc -V
kibana を起動してみる
cd ~/Kibana ruby kibana.rb
を実行すると以下のようなメッセージが表示される。
ブラウザでは $Server_IP:5601
にアクセスすると以下のように表示されて嬉しい。
fluent-plugin-elasticsearch の設定
fluent-plugin-elasticsearch のインストール
Elasticsearch と kibana の組み合わせで fluentd
を利用する為に fluent-plugin-elasticsearch
をインストールする。
/usr/lib/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch --no-ri --no-rdoc -V
td-agent.conf の設定
fluent-plugin-elasticsearch
を扱う為に td-agent
を以下のように設定する。
設定のキモとしては include_tag_key true
と tag_key @log_name
で、上記例の場合、これらを設定することで @tag_key
が debian.apache.access
となり、複数のホストからログが送られても kibana
上で tag_key
で絞り込むことが可能となる。
(以下、追記)
logstash_format true
の場合index_name
不要
使ってみる
実際にログを見てみる
ab
で適当にアクセスを偽装してログを出力してみる。
適当にアクセスしてみる
ab
で適当にアクセスを偽装してみる。
ab -c 10 -n 10 http://xxx.xxx.xxx.xxx/
kibana にアクセスする
kibana
にアクセスしてログが記録されているかを確認する。
ということで
- fluentd と Elasticsearch と kibana の組み合わせっていい!