ELK套件(ELK stack)是指ElasticSearch、Logstash和Kibana三件套。这三个软件可以组成一套日志分析和监控工具。
官方下载地址:
测试环境:redhat6.5
所需软件:JDK1.7.0,Logstash,ElasticSearch,Kibana
首先我们先了解一下上面三个套件的功能:
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
kibana也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面
下面是他们三者的一个关系架构图:
下面我们开始搭建这个ELK日志分析和监控平台
这里为了方便起见,我们直接配置centos的yum源:
设置iptables打开相应端口:
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9292 -j ACCEPT
service iptables restart
安装jdk:
yum install java-1.7.0-openjdk* -y
java -version
安装ElasticSearch
ElasticSearch默认的对外服务的HTTP端口是9200,节点间交互的TCP端口是9300
wget
mkdir /usr/local/elk
tar zxf elasticsearch-1.4.2.tar.gz -C /usr/local/elk/
mv /usr/local/elk/elasticsearch-1.4.2 /usr/local/elk/elasticsearch
安装elasticsearch-servicewrapper,并启动ElasticSearch服务:
wget
tar zxf master
mv elasticsearch-servicewrapper-master/service /usr/local/elk/elasticsearch/bin/
/usr/local/elk/elasticsearch/bin/service/elasticsearch start
下面我们测试一下ElasticSearch服务是否正常,预期返回200的状态码:
说明这个服务正常。
安装Logstash
Logstash默认的对外端口是9292.
wget
tar zxf logstash-1.4.2.tar.gz -C /usr/local/elk/
mv /usr/local/elk/logstash-1.4.2 /usr/local/elk/logstash
测试一下Logstash服务是否正常,预期可以将输入简单的日志形式打印的界面上:
/usr/local/elk/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} } '
hello we are hy#这里我们输入信息
2015-07-27T00:38:38.317+0000 elkhello we are hy#它会自动输出到屏幕
mkdir /usr/local/elk/logstash/etc
vim /usr/local/elk/logstash/etc/hy_search.conf
点击(此处)折叠或打开
input {
stdin {
type => "human"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
host => "192.168.40.131"
port => "9300"
}
}
logstash的命令行标志:
agent
-f configfile 加载logstash的配置文件,可以是文件、目录、通配符,如果是目录或者通配符,则读取第一个匹配到的文件
-e configset 设置一些配置文件中的配置
-w count 设置filter的工作者个数,默认是1
-l logfile 设置日志路径,默认是stdout
web
-a address 启动一个webserver,默认监听0.0.0.0
-p port webserver监听的地址,默认是9292
/usr/local/elk/logstash/bin/logstash -f hy_search.conf
我们可以看到他的执行结果。
我们也可以给他安装一些其他的组件,更多信息可以查看/usr/local/elk/logstash/README.md
安装Kibana
wget
tar zxf kibana-3.1.2.tar.gz
将他放到nginx的发布目录里面然后启动nginx服务:
mv kibana-3.1.2 /usr/local/lnmp/nginx/html/kibana
修改Kibana的配置文件,把elasticsearch所在行的内容替换成如下:
vim /usr/local/lnmp/nginx/html/kibana/config.js
修改ElasticSearch的配置文件,追加一行内容,并重启ElasticSearch服务:
vim /usr/local/elk/elasticsearch/config/elasticsearch.yml
http.cors.enabled:true
/usr/local/elk/elasticsearch/bin/service/elasticsearch64 restart
然后在浏览器中输入就可以访问Kibana
配置Logstash
再次创建Logstash配置文件,这里将nginx日志和系统日志作为输出,输出直接传给ElasticSearch,不再打印在界面上:
vim /usr/local/elk/logstash/etc/logstash_agent.conf
点击(此处)折叠或打开
input {
file {
type => "http.access"
path => ["/usr/local/lnmp/nginx/logs/access.log"]
}
file {
type => "http.error"
path => ["/usr/local/lnmp/nginx/logs/error.log"]
}
file {
type => "messages"
path => ["/var/log/messages"]
}
}
output {
elasticsearch {
host => "192.168.40.131"
port => 9300
}
}
使用下面命令:
nohup /usr/local/elk/logstash/bin/logstash -f /usr/local/elk/logstash/etc/logstash_agent.conf
然后在web端使用Kibana进行查看,这样我们的一个简单的日志分析和监控平台就搭建完成了。
参考资料: