Elasticsearch, Kibanaを初めて触る人が、Amazon EC2上でまず動かして見る為のSetup手順です。Elasticsearch, Kibana, nginx(reverse proxy用)を、1個のEC2 instance上にSetupします。極力コピペで手順がなぞれる様にしています。
なお、Qiita初投稿なので、色々ご容赦ください。
必要な環境+準備
- EC2 Instance * 1
- t2-microとか一番小さい奴でOK
- EBSを10GBぐらい
- AMIはLinux系なら何でも (ここではUbuntu14.04 64bitとして書いています)
- EC2にssh loginできる環境
- Port 22/80/443はアクセス出来る様に、Security policyの設定をする
- EC2のURLを確認しておく
- ここでは『http://ec2-xxxx.compute.amazonaws.com』と表記しています
全体の流れ
以下の流れで進めます。
1. Elasticsearch Setup
2. nginx Setup
3. Kibana Setup
4. Kibana, Elasticsearchへのアクセス確認
5. Sample LogをElasticsearchに登録する
Elasticsearch Setup
ここではElasticsearchのv1.4.2を使っています(この記事を書いた時点での最新)。適宜verは読み替えてください。
Install
以下のSetupで、Elasticsearchにはlocalhost port 9200でアクセス出来る様になります。
$sudo su
#apt-get update
#apt-get install git-core build-essential ruby1.9.3 openjdk-7-jdk
#wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.deb
#dpkg -i elasticsearch-1.4.2.deb
#service elasticsearch start
動作確認
Elasticsearchにアクセスできるかの確認をします。
curlのresponseの"status"が200になっている事を確認してください。
なお、"name"はアメコミのキャラクターの名前がランダムに付与されるらしいです。
#curl localhost:9200
{
"status" : 200,
"name" : “Dan Ketch",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.4.2",
"build_hash" : "927caff6f05403e936c20bf4529f144f0c89fd8c",
"build_timestamp" : "2014-12-16T14:11:12Z",
"build_snapshot" : false,
"lucene_version" : "4.10.2"
},
"tagline" : "You Know, for Search"
}
nginx Setup
nginxのSetup/設定をします、nginxは以下の様なreverse proxyとして設定します。
- http://ec2-xxxx.compute.amazonaws.com/es/ へのHTTPアクセスは、Elasticsearch (localhost:9200)に渡す
- http://ec2-xxxx.compute.amazonaws.com/kibana/ へのHTTPアクセスは、/usr/share/nginx/kibana/index.html を表示する
Install
#apt-get install nginx
#chmod 777 -R /usr/share/nginx
Reverse proxyの設定
/etc/nginx/nginx.confを編集します。元々あった内容は全て削除して、以下の内容をコピペして下さい。
user ubuntu;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
client_max_body_size 300M;
send_timeout 300s;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /kibana/ {
root /usr/share/nginx/;
index index.html;
}
location /es/ {
proxy_pass http://localhost:9200/;
}
}
}
Kibana Setup
ここではKibanaのv3.1.2を使っています(この記事を書いた時点での最新)。適宜verは読み替えてください。
ちなみに、Kibanaは単なる静的なjavascript file (html, css, js)です。
Install
KibanaをDownloadしてきて、/usr/share/nginx/kibana以下に配置しています。
#wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.tar.gz
#tar zxf kibana-3.1.2.tar.gz
#mkdir /usr/share/nginx/kibana
#mv ./kibana-3.1.2/* /usr/share/nginx/kibana
一部js fileの変更
kibanaの/usr/local/kibana/config.jsを編集します。変更内容としては、kibanaに、
『Elasticsearchにアクセスしたければ、http://ec2-xxxx.compute.amazonaws.com/es/ 以下にアクセスしてね』
と言う事を教えてあげる為のものです。
24-26行目辺りに、以下の様な行が有るので変更します。
オリジナル
elasticsearch: "http://"+window.location.hostname+":9200",
変更後
elasticsearch: "http://"+window.location.hostname+"/es",
nginxの再起動
nginxの設定を変えたので、restartします。
#service nginx restart
Kibana, Elasticsearchへのアクセス確認
Elasticsearch, nginx, Kibanaのsetupが終わりましたので、Browser経由でちゃんとアクセスできるか確認します。
Elasticsearchへのアクセス確認
Browser上で、http://ec2-xxxx.compute.amazonaws.com/es/_nodes?pretty=true にアクセスします。
Elasticsearchからのjson response (cluster_nameやnodesの情報が含まれた物)が返ってくる事を確認して下さい。
Kibanaへのアクセス確認
Browser上で、http://ec2-xxxx.compute.amazonaws.com/kibana/ にアクセスします (URLの最後の/を忘れずに!)。
KibanaのTop画面がでる事を確認して下さい。"Sample Dashboard"のlinkをclickすると、Sample Dashboardに行きます
(が、Elasticsearchに何もDataが入って居ないので、何もLog Dataは表示されないと思います)。
Sample LogをElasticsearchに登録する
Sample Log fileの入手
ここ https://github.com/harukasan/kibana-testdata から、events.json というfileをDownloadします。
25MBぐらいのファイルで、50,000件ぐらいのaccess logが入って居ます。
これをSampleとしてElasticseachに登録して見ましょう。
Sample Log fileをElasticsearchに登録する
以下の様にcurlでevents.jsonをPOSTで送りつけると、Elasticsearchに登録がされます。
curl -s -XPOST http://ec2-xxxx.compute.amazonaws.com/es/_bulk --data-binary @events.json
Kibana上で確認する
Browser上で、先ほどの"Sample Dashboard"に行ってみると、Sample Logが登録されているはずです。
真ん中の辺りでeventのカウントが54857とかに成っていれば成功です。
最後に
とりあえず、KibanaのSample Dashboardまでを辿り着けたでしょうか?
この次にやる事として、Kibanaをカスタマイズしてみて、いろんなChartやDashboardを作ってみる事だと思います。
Kibanaは便利なツールですが、GUIの見方や、Chart/Dashboardの設定は多少慣れが必要です。
この記事では割愛しますが、以下のSlideshareがわかりやすかったです。