Kibana + ElasticSearch + fluentd を試してみた

こんにちは。@jedipunkz です。

自動化の流れを検討する中でログ解析も忘れてはいけないということで ElasticSearch を使いたいなぁとぼんやり考えていて Logstash とか Kibana とかいうキーワードも目 に止まるようになってきました。

ElasticSaerch は API で情報を検索出来たりするので自動化にもってこい。バックエ ンドに Logstash を使って… と思ってたのですが最近よく聞くようになった fluentd をそろそろ真面目に使いたい!ということで、今回は Kibana + ElasticSearch + fluentd の組み合わせでログ解析システムを組む方法をメモしておきます。

参考にさせて頂いた URL

http://memocra.blogspot.jp/2013/04/kibanakibanaelasticsearchfluentd.html

前提の環境

  • OS : Ubuntu 12.04 Precise (同じ方法で 13.04 Raring でも出来ました)

必要なパッケージインストール

下記のパッケージを事前にインストールします。

% sudo apt-get install git-core build-essential ruby1.9.3 openjdk-7-jdk

手順を省くために Ruby はパッケージで入れました。また Java は他の物を利用しても 構いません。Ruby は Kibana, fluentd が、Java は ElasticSearch が必要とします。

ElasticSearch のインストール

下記のサイトより ElasticSearch をダウンロードします。

http://www.elasticsearch.org/download/

現時点 (2013/09/07) で最新のバージョンは 0.90.3 でした。

% wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.3.deb
% sudo dpkg -i elasticsearch-0.90.3.deb
% sudo service elasticsearch start

Kibana のインストール

Kibana をダウンロードして Gemfile にしたがって必要なモノをインストールします。

% git clone --branch=kibana-ruby https://github.com/rashidkpc/Kibana.git
% sudo gem install bundler
% cd Kibana
% sudo bundle install
% sudo gem install tzinfo-data

KibanaConfig.rb の KibanaHost はリスンアドレスになるので 0.0.0.0 に修正sます。

KibanaHost = '0.0.0.0'

Kibana を起動します。

% ruby kibana.rb
== Sinatra/1.4.3 has taken the stage on 5601 for development with backup from Thin
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:5601, CTRL+C to stop

fluentd のインストール

fluentd を下記の通りインストールします。

% sudo -i
% curl -L http://toolbelt.treasure-data.com/sh/install-ubuntu-precise.sh | sh

/etc/td-agent/td-agent.conf を下記の通りに修正します。サンプルで Apache のログ を ElasticSearch に飛ばす設定にします。

<source>
  type tail
  format apache
  path /var/log/apache2/access.log
  tag kibana01.apache.access
</source>

<match *.apache.*>
  index_name adminpack
  type_name apache
  type elasticsearch
  include_tag_key true
  tag_key @log_name
  host 10.0.1.8
  port 9200
  logstash_format true
  flush_interval 3s
</match>

host パラメータは環境に合わせて設定します。

fluentd を起動します。

% sudo service td-agent start

Apache のインストール

システムに必要なわけではありませんが、サンプルで Apache のログを fluentd 経由 で飛ばして Kibana で確認したいのでインストールします。

% sudo apt-get install apache2
% sudo chown -R td-agent /var/log/apache2

ファイルのオーナを td-agent にする必要がありました。

ブラウザでアクセス

Apache2 のポート 80 にブラウザでアクセスし、その後 ポート 5601 にアクセスする と Kibana の画面が表示されます。ポート 80 のアクセスに応じて結果が出力されます。

{% img /pix/kibana-cap.png %}

まとめ

LogStash でも今度試してみたい。 あと API をどう叩くかは..

http://www.elasticsearch.org/guide/reference/api/

にリファレンスがあるので、時間を見つけてやってみる。Apache 以外のログ転送につ いては fluentd を詳細に知る必要があるので、そちらも時間を見つけてやってみる。 kibana.rb を起動するもっと良い方法がないかも調べないと。

2013.09.08追記

@nora96o さんに「Kibana3 使うと幸せになれますよ!」と教えて頂いて早速 Kibana3 も試してみました。

http://jedipunkz.github.io/blog/2013/09/08/kibana3-plus-elasticsearch-plus-fluentd/