在EC2上设置Elasticsearch和Kibana的步骤
以下是让初次接触Elasticsearch和Kibana的人在Amazon EC2上进行设置并预览的操作步骤。我们将在一个EC2实例上设置Elasticsearch、Kibana和nginx(用于反向代理)。为了尽可能方便地复制粘贴步骤。
顺便说一下,这是我在Qiita的初次投稿,请多多包涵。
合适的环境和准备工作
- 一个 EC2 实例。
- 使用 t2-micro 或者最小的那个可以。
- EBS 大约 10GB。
- AMI是任何 Linux 类型都可以(这里以 Ubuntu14.04 64bit 为例)。
- 创建一个可以通过 ssh 登录的 EC2 环境。
- 设置安全策略,允许访问端口 22/80/443。
- 记下 EC2 的 URL。
- 在这里我们以 “http://ec2-xxxx.compute.amazonaws.com” 表示。
整体的趋势
以下是流程的步骤:
1. Elasticsearch设置
2. nginx设置
3. Kibana设置
4. 验证对Kibana和Elasticsearch的访问
5. 将示例日志注册到Elasticsearch中
Elasticsearch安装设置
在这里我们正在使用Elasticsearch的v1.4.2版本(此文章撰写时的最新版本)。请根据需要自行更改版本号。
安装
在下面的设置中,Elasticsearch可以通过localhost的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的响应是否为”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 安装
我会配置nginx,nginx将配置为以下类型的反向代理。
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 を表示する
安装
#apt-get install nginx
#chmod 777 -R /usr/share/nginx
反向代理服务器的配置
请编辑/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设置
在这里我们使用Kibana的v3.1.2(在撰写本文时为最新版本)。请根据需要适当更改版本号。
值得一提的是,Kibana只是一个简单的静态JavaScript文件(包含HTML、CSS和JS)。
安装
我将Kibana下载并放置在/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
一個JavaScript檔案的修改
编辑/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的配置,所以会重新启动。
#service nginx restart
确认对Kibana对Elasticsearch的访问
Elasticsearch、Nginx、Kibana的设置已经完成,我们将通过浏览器确认是否可以正确访问。
确认对Elasticsearch的访问
请通过浏览器访问http://ec2-xxxx.compute.amazonaws.com/es/_nodes?pretty=true。请确认是否会收到来自Elasticsearch的JSON响应(其中包含了cluster_name和nodes的信息)。
确认对Kibana的访问。
在浏览器上访问 http://ec2-xxxx.compute.amazonaws.com/kibana/(不要忘记URL末尾的/)。确认 Kibana 的顶部画面是否出现。点击 “Sample Dashboard” 的链接,即可跳转到 Sample Dashboard(但由于 Elasticsearch 中没有任何数据,我认为不会显示任何日志数据)。
将示例日志注册到Elasticsearch中
获取示例日志文件
您可以从https://github.com/harukasan/kibana-testdata下载events.json文件。
这个文件大约有25MB,包含了大约50,000条访问日志。
让我们将其作为示例注册到Elasticsearch中。
将样本日志文件注册到Elasticsearch中。
当使用curl命令以POST方式将events.json发送到Elasticsearch时,将会完成注册。
curl -s -XPOST http://ec2-xxxx.compute.amazonaws.com/es/_bulk --data-binary @events.json
在Kibana上进行查看
在浏览器上,如果您尝试访问之前的“样本仪表板”,应该会看到已经注册了一些样本日志。
如果在中间附近看到事件的计数变为54857,那就表示成功了。
最后
首先,你成功找到了Kibana的示例仪表盘,对吧?
接下来要做的是尝试自定义Kibana并创建各种图表和仪表盘。
虽然Kibana是一种方便的工具,但需要对其GUI的使用方法以及图表/仪表板的设置有一定的熟悉才行。
虽然我会在本文中略过这方面的内容,但以下的Slideshare很容易理解。