AWS で動いている nginx のログを fluentd で S3 に転送している状態で、 ログを Elastic Search に飛ばして Kibana 3 で眺めるまでの流れ。
- 拠点からの80番と9200番を許可(443にできるなら443で)
- ログを発生させるサーバからの9200番を許可
さきほど作ったセキュリティグループを使って適当に立てる。
RPM でインストールするのが楽。RPM はここにある http://www.elasticsearch.org/download/
$ sudo rpm -ivh https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.noarch.rpm
$ sudo yum install nginx
location /kibana/ {
root /opt/kibana;
# 念のため拠点以外からのアクセスを禁止
allow xx.xx.xx.xx/32;
deny all;
}
http://www.elasticsearch.org/overview/kibana/installation/ からダウンロードして /opt/kibana/kibana に展開する
$ cd /tmp
$ curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone4.tar.gz
$ tar xzvf kibana-3.0.0milestone4.tar.gz
$ sudo mkdir /opt/kibana-3.0.0milestone4
$ sudo mv kibana-3.0.0milestone4 /opt/kibana-3.0.0milestone4/kibana
ログを飛ばしたいサーバで fluentd-plugin-elasticsearch をインストールする。インストールするには gcc や ruby-devel や libcurl-devel が必要かもしれない。
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch
Chef のレシピなら
gem_package "fluent-plugin-elasticsearch" do
gem_binary "/usr/lib64/fluent/ruby/bin/fluent-gem"
end
これを入れたら td-agent.conf をこんな風に書き換えて
<match nginx.access>
# ログを複数箇所で使うので copy で分岐する
type copy
<store>
# 既存の S3 転送設定
</store>
<store>
type elasticsearch
host さっき立てたインスタンスの Public IP
</store>
</match>
再起動する。
sudo /etc/init.d/td-agent restart
起動したインスタンスの Public IP の /kibana/ にアクセスすれば、 何か出てくると思う。