开源实时日志分析ELK平台部署
官网地址:https://www.elastic.co/products
介绍:
- Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
- kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
安装部署流程:
- java环境
java下载http://www.java.com/zh_CN/download/manual.jsp
创建目录和解压缩
mkdir -p /usr/local/java
tar -zxf jre-8u101-linux-x64.tar.gz -C /usr/local/java/
环境变量更改
vim ~/.bashrc
export JAVA_HOME=/usr/local/java/jre1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
source ~/.bashrc
查看java版本java -version
- Logstash
我们需要为它指定Input和Output(当然Input和Output可以为多个)。
logstash下载https://www.elastic.co/downloads/logstash
解压tar -zxf logstash-2.3.4.tar.gz -C /usr/local/
/usr/local/logstash-2.3.4/bin/logstash 命令有2个参数
/usr/local/logstash-2.3.4/bin/logstash -e 'input { stdin { } } output { stdout {} }'
其中-e参数参数允许Logstash直接通过命令行接受设置
使用CTRL-C命令可以退出之前运行的Logstash。
我们还可以通过配置文件方式实现
/usr/local/logstash-2.3.4下创建一个config目录
mkdir config;cd config
vim logstash-simple.conf
input { stdin { } }
output {
stdout { codec=> rubydebug }
}
Logstash使用input和output定义收集日志时的输入和输出的相关配置,本例中input定义了一个叫"stdin"的input,output定义一个叫"stdout"的output。无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符,其中output被定义为"stdout"并使用了codec参数来指定logstash输出格式。
/usr/local/logstash-2.3.4/bin/logstash agent -f /usr/local/logstash-2.3.4/config/logstash-simple.conf
输入2个命令ls和echo "`date` hello World",可以从上图中看到屏幕输出的2次结果,记录这两次命令产生的信息。
- Elasticsearch
ElasticSearch是一个高可扩展的开源的全文搜索分析引擎。它允许你快速的存储、搜索和分析大量数据。ElasticSearch通常作为后端程序,为需要复杂查询的应用提供服务。
Elasticsearch是一个基于Lucene的开源分布式搜索引擎,具有分布式多用户能力。Elasticsearch是用java开发,提供Restful接口,能够达到实时搜索、高性能计算;同时Elasticsearch的横向扩展能力非常强,不需要重启服务,基本上达到了零配置。
elasticsearch下载https://www.elastic.co/downloads/elasticsearch
解压tar -zxf elasticsearch-2.3.5.tar.gz -C /usr/local/
后台运行cd /usr/local/elasticsearch-2.3.5/bin -d
如果是用root账号启动,会报以下错误
[2016-08-08 13:53:48,888][ERROR][bootstrap ] Exception
java.lang.RuntimeException: don't run elasticsearch as root.
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,建议创建一个单独的用户用来运行ElasticSearch。
创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
cd /usr/local
chown -R elsearch:elsearch elasticsearch-2.3.5
切换到elsearch用户再启动
su - elsearch
cd /usr/local/elasticsearch-2.3.5/bin/
./elasticsearch -d
cd /usr/local/elasticsearch-2.3.5/logs/
cat elasticsearch.log
日志输出信息
修改配置文件/usr/local/elasticsearch-2.3.5/config/elasticsearch.yml
cluster.name: 10.10.83.162
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
重启elasticsearch,页面访问
返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。
安装head插件
1)https://github.com/mobz/elasticsearch-head下载zip包
2)建立/usr/local/elasticsearch-2.3.5/plugins/head目录
3)将解压后的elasticsearch-head-master文件夹下的文件复制到head下
4)打开http://localhost:9200/_plugin/head/
安装kopf插件
1)下载https://github.com/lmenezes/elasticsearch-kopf压缩包
2)建立/usr/local/elasticsearch-2.3.5/plugins/kopf目录
3)将解压后的elasticsearch-kopf-master文件夹下的文件copy到kopf下
4)打开http://localhost:9200/_plugin/kopf/
修改/usr/local/logstash-2.3.4/config/logstash-simple.conf文件
input { stdin { } }
output {
elasticsearch {
action => "index"
hosts => "localhost"
index => "east"
}
stdout { codec=> rubydebug }
}
运行/usr/local/logstash-2.3.4/bin/logstash agent -f /usr/local/logstash-2.3.4/config/logstash-simple.conf
输入hello logstash
执行curl 'http://localhost:9200/_search?pretty' 返回结果如下
已经成功利用Elasticsearch和Logstash收集日志数据。
- Kibana
Kibana下载https://www.elastic.co/downloads/kibana
解压tar -zxf kibana-4.5.4-linux-x64.tar.gz -C /usr/local/
修改配置文件vim /usr/local/kibana-4.5.4-linux-x64/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
kibana.index: ".kibana"
启动/usr/local/kibana-4.5.4-linux-x64/bin/kibana
为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里我输入logstash配置文件引用的east
点击Create后,可以看到左侧增加了配置的Index名字:
其他参考资料:
ELKstack 中文指南http://kibana.logstash.es/content/logstash/
入门学习资源索引http://blog.csdn.net/longxibendi/article/details/35237543/
其它http://www.52devops.com/chuck/201.html
Mastering Elasticsearch(中文版)http://udn.yyuap.com/doc/mastering-elasticsearch/index.html
Logstash 最佳实践http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html
Kibana http://www.code123.cc/docs/kibana-logstash/v3/index.html