开源实时日志分析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

04-19 19:21