前言
之前在腾讯工作的时候,曾在内部资料平台中看到过一篇关于ELK的教程。在12月份,项目开发过程中涉及到API对接部分,开发人员经常需要查看日志文件来debug传递的参数和返回的结果,但是多个项目系统日志文件存放在不同路径,而且直接查看文件又较难定位,故用Elasticsearch + Kibana 搭建了一套web日志系统。
搭建步骤
Elasticsearch
下载并解压Elasticsearch,我下载了Elasticsearch-2.1.1
进入 Elasticsearch根目录,执行命令
bin/elasticsearch
,使用windows系统的可以执行命令bin/elasticsearch.bat
,这样就可以启动 Elasticsearch服务了。接着可以测试一下Elasticsearch是否正常启动,执行命令
curl -X GET http://localhost:9200/
,如果输出类似如下内容,那就说明成功了。1
2
3
4
5
6
7
8
9
10
11
12{
"name" : "Conan the Barbarian",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.1",
"build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
"build_timestamp" : "2015-12-15T13:05:55Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
Logstash
下载并解压Logstash,我下载了Logstash-2.1.1
进入 Logstash根目录,新建Logstash配置文件
logstash.conf
,输入如下配置:1
2
3
4
5
6
7
8
9
10
11input {
file {
path => ["/path/to/log/*.log"]
start_position => beginning
type => 'your type here'
}
}
output {
elasticsearch {
}
}上面使用了比较简单的配置,详细配置可以参考 Logstash Reference
执行命令
bin/logstash agent -f logstash.conf
,这样就可以启动 Logstash服务了。
Kibana
下载并解压Kibana,我下载了Kibana 4.3.1
进入Kibana目录,编辑配置文件
vim config/kibana.yml
,设置Elasticsearch的URL,默认为http://localhost:9200
,设置Kibana Server Host,默认为"0.0.0.0"
,最后配置Apache或Nginx等搭建web服务器,这里我使用了Apache。1
2
3
4
5
6
7
8
9
10
11
12<VirtualHost *:80>
ServerName yourserver.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://0.0.0.0:5601/
ProxyPassReverse http://0.0.0.0:5601/
</Location>
</VirtualHost>配置好hosts文件后,打开浏览器输入Kibana服务的地址,首先会让你设置一个
index pattern
,设置完就可以看到日志内容啦~
定时清理过期日志
过期的日志会占用一定的磁盘空间,可以加一个crontab脚本定时清理。
可设定一个天数(如60天)过期, 因为 Logstash 默认建立的index 是 logstash-2016.01.01的格式, 用crontab 每天凌晨来删除日志
1
vim cleanup.sh
1 | #!/usr/bin/env bash |
crontab -e // 添加任务
1 1 * (cd /path/to/cleanup; ./cleanup.sh >/dev/null 2>&1)&
```