前言:随着硬件成本的不断低廉,我们可以存储更多数据内容,也会对各数据加以利用,其中一项很重要的数据内容便是日志文件,无论是访问日志还是系统日志或是应用日志,都显得十分重要,而怎么加以利用一直是一个难题,本文就着重于ELK三套件的搭建,是比较流行或者说可靠的日志分析组件,值得注意的说,本文暂时只考虑单机Elasticsearch,并且为了作为演示,就linux的系统日志收集作为演示。
版本说明:
ElasticSearch 1.7.1
Kibana 4..1
Logstash 1.5.2
JAVA jdk-7u76
注: 最新的上面不一定是最新的版本,不同的版本之间可能有兼容问题,而上面的组合是本人已经验证过的了。
首先放一张图镇镇楼
强调:不要用IE浏览Kibana!!!
ELK下载地址:https://www.elastic.co/downloads
JAVA环境的安装就不演示了!!!(推荐使用jdk-7u76-linux-x64.gz)
1
2
3
|
tar zxvf elasticsearch-1.7.1. tar .gz
tar zxvf kibana-4.1.1-linux-x64. tar .gz
tar zxvf logstash-1.5.2. tar .gz
|
值得注意的是,你可以通过elastic提供的rpm包直接安装,但是那对于一个运维人员太没挑战性了~~再者,对ELK的认识实在不够深刻。
下载elasticsearch-servicewrapper(是一个elasticsearch的启动脚本)
#wget https://github.com/elastic/elasticsearch-servicewrapper/archive/master.zip
###通过这个脚本可以更简单执行Elasticsearch服务启动关闭等命令
其中包括
Console 在前台启动
Start 在后台启动
Stop 关闭
Install 装到启动项里面
Remove 移除卸载
开始安装
1
2
3
4
5
|
mv elasticsearch-1.7.1 /data/elasticsearch
unzip master.zip mv elasticsearch-servicewrapper-master/* /data/elasticsearch/bin/
mv logstash-1.5.2 /data/logstash
mv kibana-4.1.1 /data/kibana
|
ELK三套件都是依赖JAVA环境并不需要编译安装,所以安装其实非常简单,只是有版本兼容问题所以部分人总是装不上,再者ELK需要相关优化,不然就会总是抛出异常。
ELK中的E,elasticsearch一个全文搜索引擎,存储着收集过来的所有数据并支持集群模式,你只用真正的会用的时候你才会体会到它的异常强大,虽然笔者也是刚刚深入,但是又一次通过Python调用API查询自安装使用至今,查询结果大于五万条数据,嗖的一下就返回,没有任何延迟,并且是结果聚合的数据,由此可见一斑,而且是单机版的。
配置elasticsearch
1
|
vi /data/elasticsearch/config/elasticsearch .yml
|
增加下面两行
1
2
|
http.cors.enabled: true
http.cors.allow-origin:http: //ip (本机IP)
|
启动Elasticsearch
1
|
/data/elasticsearch/bin/service/elasticsearch start
|
本地测试Elasticsearch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
curl -X GET http: //localhost :9200/
{ "status" : 200,
"name" : "Jack Flag" ,
"cluster_name" : "elasticsearch" ,
"version" : {
"number" : "1.7.1" ,
"build_hash" : "927caff6f05403e936c20bf4529f144f0c89fd8c" ,
"build_timestamp" : "2015-07-16T14:11:12Z" ,
"build_snapshot" : false ,
"lucene_version" : "4.10.2"
},
"tagline" : "You Know, forSearch"
} |
ELK中的L指Logstash,是一个日志收集应用,本文主要用来收集系统日志,你当然也可以用来解析各种日志,如Tomcat,Nginx,MongoDB等相关应用日志,此文档作为安装文档就不做演示了。
配置logstash
1
2
|
mkdir /data/logstash/conf/
vi /data/logstash/conf/sys .conf
|
input {
syslog{
port => "514"
type => "syslog"
}
}
output {
elasticsearch {
host => "127.0.0.1"
}
}
上面的信息是说,以syslog作为输入,监听514端口,Type为syslog,将接收的信息输出到本机的elasticsearch。
如果你执行/data/logstash/bin/logstash -f /data/logstash/conf/sys.conf
你会发现本机监听514端口,但是没有用,因为没有配置任何机器的rsyslog,其他机器怎么会发信息过来~
所以我们配置一下,需要收集系统日志的主机的rsyslog
1
2
3
4
|
yum -y install rsyslog
vi /etc/rsyslog .conf
##加入下面一行,ip填日志服务器的IP
*.* @@ip:514
|
当你重启被收集日志主机的rsyslog,该主机就会往日志服务器的514端口以syslog的格式发送系统日志了。
因为是源码安装的,所以可能需要用& 或者nohup 或者自己写的启动脚本将logstash服务放到后台,这里推荐supverisor,后面的kibana也通过supervisor放到后台。
#修改kibana配置文件
1
2
|
# vi/data/kibana/config/kibana.yml port: 80 ##改为80(默认监听5601端口)
|
然后启动kibana
1
|
/data/kibana/bin/kibana > /dev/null 2>&1 &
|
但是通过&或者nohup实在太不优雅了,我们使用supervisor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
yum -y install supervisor
[program:kibana] command = /data/kibana/bin/kibana
autorestart = true
redirect = true
stderr_logfile = /var/log/kibana/kibana .log
startsecs = 3 [program:logstash] command = /data/logstash/bin/logstash -f /data/logstash/conf/logstash .conf -l /data/logstash/logstash_debug .log
autorestart = true
redirect = true
stderr_logfile = /var/log/logstash/logstash .log
startsecs = 3 |
至于supervisord的详细配置,请参考:http://youerning.blog.51cto.com/10513771/1714627
最后启动supervisord即可。
现在你就可以访问日志服务器了。
第一次登陆,应该是下面的页面
因为我们没有创建索引,所以他会提示我们创建索引,点击create即可,如果你没有配置发送系统日志的rsyslog你会发现,输入框是红色,不能create,这是因为elasticsearch没有任何内容。
当然可以手工的创建一条信息。
创建一个配置文件
1
|
vi hello.conf
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
input { stdin {
type => "human"
}
} output { stdout {
codec => rubydebug
}
elasticsearch {
host => "127.0.0.1"
}
} |
/data/logstash/bin/logstash -f hello.conf
在提示Completed之后,随便输入一条信息即可。
上面安装完成后,你会发现kibana总是会出现红色提示框"shards faild",所以需要相关优化
关于elasticsearch的优化
配置文件/data/elasticsearch/config/elasticsearch.yml增加一面内容
# Search pool
threadpool.search.type: fixed
threadpool.search.size: 20
threadpool.search.queue_size: 10000
系统优化
vi /etc/security/limits.conf
1
2
3
4
|
elasticsearch soft nofile 32000 elasticsearch hard nofile 32000 root hard nofile 32000 root soft nofile 32000 |
后记:好吧,安装文档就到这里吧,关于Elasticsearch的API调用(主要通过Python)以及Kibana的使用在以后的内容文章会说到
本文转自 youerning 51CTO博客,原文链接:http://blog.51cto.com/youerning/1726338