ElasticSearchはJSONでデータをPUT/GET可能なAPIを持つLuceneをベースとした全文検索エンジンです。ElasticSearchのフロントエンドにKibanaがあり、データを抽出してグラフィカルに表示することができます。
fluentdはもともとJSONでデータを扱っていますので、 fluent-plugin-elasticsearchというプラグインを使うとfluendで集めたログをElasticSearchへ転送するということが簡単にできます。
インストール手順
いつものようにAmazonLinuxを使います。
ElasticSearchのインストール
ベースとしているLuceneがJava製なのでJava環境を入れる必要がありますが、AmazonLinuxは最初から入っているので気にしないでいいです。
RPMからインストールします。
RPMパッケージは、http://www.elasticsearch.org/download/から最新のものを探します。
※2014/02/10時点では0.90.11が最新でした。
curl -LO https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.11.noarch.rpm
rpm -ihv elasticsearch-0.90.11.noarch.rpm
service elasticsearch start
chkconfig elasticsearch on
Apacheのインストール
Apacheのログを集めるので入っていなければ入れておきます。また、fluentdからApacheのアクセスログにアクセスできるように権限をいじっておきます。
yum install -y httpd
service httpd start
chkconfig httpd on
chmod +rx /var/log/httpd
chmod -R +r /var/log/httpd/*
fluentdのインストールと設定
vi /etc/yum.repos.d/td.repo
##################
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
##################
yum install -y td-agent
yum install -y gcc gcc-c++
/usr/lib64/fluent/ruby/bin/fluent-gem update --no-ri --no-rdoc
/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch --no-ri --no-rdoc
vi /etc/td-agent/td-agent.conf
##################
<source>
type tail
format apache
path /var/log/httpd/access_log
tag ec2.apache.access
pos_file /tmp/apache.pos
</source>
<match *.apache.*>
type_name apache
type elasticsearch
include_tag_key true
tag_key @log_name
host ***.***.***.***
port 9200
logstash_format true
logstash_prefix ec2
flush_interval 10s
</match>
##################
service td-agent start
chkconfig td-agent on
Kibana3のインストール
Kibana3はJavascriptとHTMLだけで書かれているので、サーバ上に展開してApacheのドキュメントルートに置くだけでセットアップ完了です。
Kibana3はhttp://www.elasticsearch.org/overview/kibana/installation/から最新のものを落としてきます。
※2014/02/10時点ではDownload Kibana 3 milestone 4が最新でした。
curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone4.zip
unzip kibana-3.0.0milestone4.zip
mv kibana-3.0.0milestone4 kibana
cp -R kibana /var/www/html/
ファイアウォール設定
SecurityGroupなりiptablesなりで、
- 80(Apache)
- 9200(ElasticSearch)
のポートを開けておきます。
クライアントからElasticSearchの9200番ポートへ直接アクセスできるようにしておく必要があります。
Kibana3にアクセスしてみる
http://xxx.xxx.xxx.xxx/kibana/
にブラウザからアクセスします。
「Logstash Dashboard」というリンクをクリックします。
デフォルトでなんとなくアクセスのグラフとアクセスログ一覧が表示できていることがわかります。アクセスログはチェックボックスでフィールドごとに表示/非表示にしたりできます。
また、上部のQUERYのテキストボックスで絞り込み表示ができます。
ここではLuceneの仕様に従った構文でクエリを投げる必要があります。構文の仕様は、
[Apache Lucene - Query Parser Syntax](http://lucene.apache.org/core/2_9_4/queryparsersyntax.html"Apache Lucene - Query Parser Syntax")
あたりにあります。そんなにややこしくない感じです。