hidemium's blog

日々学んだことをアウトプットする。

Fluentd + Elasticsearch + Kibanaでログを可視化する

FluetndからElasticsearchへログを転送し、Kibanaでログを可視化できるか試してみました。転送するログはSensu Serverのログを使用しました。

構成

Ubuntu 12.04: Sensu Server インストール対象
Ubuntu 12.04: Elasticsearch
※上記はDocker 1.0.0上で動作しています。

Fluentdのインストール

Fluentdをインストールします。
Fluentdの安定版であり、Rubyのインタープリンタを含んだtd-agentを使用します。また、td-agentの必須パッケージのlibssl0.9.8が入っていなかったので合わせてインストールしています。

$ curl http://packages.treasuredata.com/GPG-KEY-td-agent | apt-key add -
$ echo "deb http://packages.treasuredata.com/precise/ precise contrib" > /etc/apt/sources.list.d/treasure-data.list
$ apt-get update
$ apt-get install -y libssl0.9.8
$ apt-get install -y ntp td-agent

Fluentdのバージョンを確認します。

$ /usr/lib/fluent/ruby/bin/fluentd --version
fluentd 0.10.50

supervisorでFluentdを起動する設定を追加します。

$ vi /etc/supervisor/conf.d/td-agent.conf
[program:td-agent]
command=/etc/init.d/td-agent start
autostart=true
autorestart=true

Elasticsearchへの連携

td-agent.confに以下の内容を追加し、転送するログとElasticsearchサーバの指定を行います。
今回はSensu Serverのログを転送する設定をしています。

$ vi /etc/td-agent/td-agent.conf
<source>
  type tail
  format json
  path /var/log/sensu/server.log
  tag ubuntu.sensu.server
  pos_file /tmp/sensu.pos
</source>

<match *.sensu.*>
  type elasticsearch
  include_tag_key true
  tag_key @log_name
  host <IPアドレス>
  port 9200
  logstash_format true
  flush_interval 10s
</match>

supervisorをリロードして、Fluentdを起動します。

$ supervisorctl reload

Kibanaの確認

「http://<サーバのIPアドレス>:<ポート番号>」からKibanaにアクセスし、トップページの「Logstash Dashboard」をクリックすると、Sensu Serverのログが転送されているのが確認できます。