FluentdからElasticsearchに転送してKibanaで可視化する
こんにちは@oko_changです。
前回はFluentdについて記載しましたが、今回はFluentdからElasticsearchにログを転送してKibanaで可視化するまでをまとめておきたいと思います。
環境概要
前回の環境にElasticsearchとKibanaを追加するイメージです。
- CentOS6.5
Elasticsearchのセットアップ
インストールは公式にあるようにYumのリポジトリを追加して簡単に出来ます。
javaが必要なので、それもインストールしておきます。
# rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch # cat >> /etc/yum.repos.d/elasticsearch.repo <<'EOF' [elasticsearch-1.0] name=Elasticsearch repository for 1.0.x packages baseurl=http://packages.elasticsearch.org/elasticsearch/1.0/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1 EOF # yum install elasticsearch java-1.7.0-openjdk
インストールが終わったら起動して、動作確認してみます。
# chkconfig elasticsearch on # service elasticsearch start # curl -X GET http://localhost:9200/ { "status" : 200, "name" : "Knickknack", "version" : { "number" : "1.0.1", "build_hash" : "5c03844e1978e5cc924dab2a423dc63ce881c42b", "build_timestamp" : "2014-02-25T15:52:53Z", "build_snapshot" : false, "lucene_version" : "4.6" }, "tagline" : "You Know, for Search" }
Kibanaのセットアップ
Kibanaもセットアップは簡単です。
公式ページから圧縮ファイルをダウンロードして、任意のディレクトリに配置します。
KibanaはJavascriptで動作しており、アクセスされるブラウザからElasticsearchがListenしているポートに接続出来る必要があります。
ちょっとその構成が気持ち悪いので、今回はconfig.js内のelasticsearch:の設定を以下のようにし、Apacheのリバースプロキシ経由でアクセスするようにしたいと思います。
※Apacheの設定は後述。
# useradd kibana # passwd kibana # chmod +x /home/kibana # su - kibana $ curl -LO https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone5.tar.gz $ tar zxvf kibana-3.0.0milestone5.tar.gz $ ln -s /home/kibana/kibana-3.0.0milestone5 ./kibana $ vi /home/kibana/kibana/config.js $ grep okochang /home/kibana/kibana/config.js elasticsearch: "http://kibana.okochang.com/es/", # exit
Apache
Apacheは、以下のように名前ベースのVirtualHostを設定しています。
さらにElasticsearchへの接続用に/es/をリバースプロキシ構成にしています。
必要に応じてDigest認証の設定も追加します。
# yum install httpd # htdigest -c /etc/httpd/conf/htdigest "Required authentication" okochang # vi /etc/httpd/conf.d/vhosts.conf # cat /etc/httpd/conf.d/vhosts.conf NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /home/kibana/kibana ServerName kibana.okochang.com ProxyPass /es/ http://localhost:9200/ ProxyPassReverse /es/ http://localhost:9200/ CustomLog logs/access_log custom ErrorLog logs/error_log Options FollowSymLinks <Location /> AuthType Digest AuthName "Required authentication" AuthUserFile /etc/httpd/conf/htdigest require valid-user Satisfy any Order deny,allow Deny from all Allow from 127.0.0.1 </Location> </VirtualHost> # httpd -t # chkconfig httpd on # service httpd start
ブラウザからKibanaにアクセス
以下のように管理画面のトップページが表示されます。
fluent-plugin-elasticsearch
最後に転送元のサーバでfluent-plugin-elasticsearchをインストールして、Elasticsearchに転送する設定をします。
※以下は前回設定行った設定に追記しております。
# sudo yum install gcc gcc-c++ libcurl-devel # /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch --no-ri --no-rdoc # vi /etc/td-agent/td-agent.conf # cat /etc/td-agent/td-agent.conf ## Input <source> type tail path /var/log/httpd/access_log format /^(?<date>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} \w{3}) (?<processing_time>[^ ]*) (?<remote>[^ ]*) (?<user>[^ ]*) \[(?<method>.*)\] (?<status>[^ ]*) (?<size>[^ ]*) \[(?<referer>[^ ]*)\] \[(?<agent>.*)\]/ pos_file /var/log/td-agent/tmp/apache.access.log.pos tag apache.access </source> ## Output <match apache.access> type copy <store> type file path /var/log/td-agent/apache.access time_slice_format %Y%m%d time_format %Y%m%dT%H%M%S%z </store> <store> type forward send_timeout 60s recover_wait 10s heartbeat_interval 1s <server> name fluentd.okochang.com host 10.0.1.200 port 24224 </server> </store> <store> type elasticsearch host 10.0.1.200 port 9200 type_name access_log logstash_format true logstash_prefix apache_access logstash_dateformat %Y%m flush_interval 10s </store> </match>
追記(2014年3月22日)
Elasticsearchのsは小文字が正解です。
Sは小文字!
— Jun Ohtani (@johtani) 2014, 3月 22
ご指摘ありがとうございます、修正しました!
感想
セットアップは思ったよりも簡単ですね。
管理が画面もカッコイイし、色々なログをElasticsearchに保存して可視化したくなります。
参考リンク
- http://www.elasticsearch.org/
- http://www.elasticsearch.org/overview/kibana/
- http://www.elasticsearch.org/blog/apt-and-yum-repositories/
- http://www.elasticsearch.org/overview/kibana/installation/
- http://docs.fluentd.org/ja/articles/free-alternative-to-splunk-by-fluentd
- http://blog.excale.net/index.php/archives/1929
- http://qiita.com/kakipo/items/5ccaab8581a3158dfcff
- http://blog.manabusakai.com/2014/02/centos-elasticsearch-install/
- http://kame-t.hatenablog.jp/entry/2014/02/28/160523