本文安装步骤参考来源于:http://blog.csdn.net/nero__a/article/details/53609821

开源实时日志收集平台ELK由ElasticSearch、Logstash、Kibana三个开源工具组成,官方网址为:https://www.elastic.co/products

在Elastic 5.0版本之后,官方又加入了Beats套件,然后把他们统称为Elastic Stack。

 

ElasticSearch:是一个开源的分布式搜索引擎,其特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,Rest风格接口,多数据源,自动搜索负载等。

Logstash:是一个开源的日志收集和分析工具,能够将日志进行分析后,提供给ElasticSearch进行使用。

Kibana:可以为ElasticSearch和Logstash提供一个进行日志分析的友好Web界面,帮助汇总、分析、搜索重要日志。

Filebeat:是一个开源的文件收集器,最初是基于Logstash-forward源码的日志数据shipper,适合用于日志文件的收集。把Filebeat安装在服务器上,作为代理来监视日志目录或特定的日志文件,然后把日志数据转发到Logstash中进行分析,或者是直接转发到ElasticSearch中进行搜索。

ELK Stack的部署示意图如下。

 

整个ELK Stack由5个部分组成:JDK 8,ElasticSearch,Logstash,Filebeat,Kibana。文中所用的ELK Stack组件都是5.0以上版本。

 

1、JDK8

因为整个ELK Stack都需要依赖于JDK 8环境,所以在搭建环境之前,需要先进行JDK的安装和环境变量配置。

1.1 判断JDK是否安装

执行Java -version命令,如果打印出下图中的文字,说明JDK已经成功安装,并且配置了环境变量。

 

1.2 下载JDK

如果没有安装JDK,可以登录Oracle官网进行JDK 8的下载,下载地址为:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html。

完成下载后,把JDK放到搭建ELK的环境里,执行tar -zxf jdk-8u111-Linux-x64.tar.gz -C /usr/local命令,对JDK进行解压。

1.3 配置JDK环境变量

使用vim /etc/profile命令,对profile文件进行编辑。然后在文件末尾,添加以下内容。

export INSTALL4J_JAVA_HOME=/usr/local/java/jdk1.8.0_111

export JAVA_HOME=/usr/local/java/jdk1.8.0_111

export PATH=$JAVA_HOME/bin:$PATH

然后退出当前用户,重新登录系统。

1.4 验证安装

完成JDK环境变量配置之后,可以通过java -version命令来检查JDK是否安装成功。

 

2、ElasticSearch

2.1 下载并解压

通过执行wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz命令,可以进行ElasticSearch的压缩包下载。

下载完成后执行tar -zxf elasticsearch-5.0.1.tar.gz -C /usr/local命令,把ElasticSearch解压到/usr/local目录下。

 

2.2 修改配置文件

ElasticSearch的配置文件位于/usr/local/elasticsearch-5.0.1/config目录下。执行vim elasticsearch.yml修改配置文件,在配置文件中添加以下配置。

path.data: /var/lib/elasticsearch

path.logs: /var/logs/elasticsearch

network.host: 0.0.0.0

path.data和path.logs两个变量是对ElasticSearch数据存储目录和日志目录的配置。

Network.host变量,需要配置成0.0.0.0,是为了能让除了本机以外的机器,能通过浏览器成功访问ElasticSearch的地址(http://192.168.2.72:9200/)。

2.3 启动服务

完成配置文件修改后,在ElasticSearch的安装目录下,执行./bin/elsasticserach命令,进行服务器的启动。

ElasticSearch服务在linux系统中,不能直接使用root用户进行启动,需要创建一个非root用户,并且把ElasticSearch相关文件的所有者都修改为这个非root,然后使用该用户进行ElasticSearch的启动。

用户可以通过以下命令进行用户组、用户创建,和修改文件的所有者。

groupadd elsearch

useradd elsearch -g elsearch -p elasticsearch

chown -R elsearch elasticSearch.log

 

服务启动的时候,可能会出现下面截图中的异常信息出现。

 

这个异常不影响ElasticSearch的使用,只要对linux内核进行升级,异常信息就不会再出现。

2.4 验证安装

可以通过访问http://IP:9200,来验证ElasticSearch是否启动成功。在浏览器中进行访问时,会在页面里返回以下信息。

 

 

3、Logstash

3.1 下载并解压

通过执行wget https://artifacts.elastic.co/downloads/logstash/logstash-5.0.1.tar.gz命令来进行Logstash的下载。

下载完成后执行tar -zxf logstash-5.0.1.tar.gz -C /usr/local命令,把Logstash解压到/usr/local目录下。

3.2 测试Logstash

解压完成后,在Logstash的目录下执行./bin/logstash -e 'input { stdin { } } output { stdout {} }'命令,启动Logstash。

 

启动完成后,直接在控制台中输入HelloWorld,然后回车,将会在控制台中打印出刚才输入的Helloworld。

3.3 创建配置文件

在Logstash的目录下,通过vim logstash-test.cnof命令,创建Logstash的配置文件。配置文件内容如下。

input {

  file {

    path =>["/home/test/test.log"]

    add_field => {"appName" => "test"}

    type =>"test"

  }

  beats {

   port => 5044

  }

 }

filter{

      grok {

        match => {"message" => "

 
 
 
" }

 

    }

 

}

output {

  elasticsearch { hosts => ["192.168.2.72:9200"] }

  stdout { codec => rubydebug }

Input中的file,是用来从指定文件中读取文件数据,beats是配置了一个给Filebeat使用的端口号。

在filter里面,配置了一个grok插件,这个插件的作用是通过正则表达式,对收取到的日志数据进行解析。

在output中配置了两个数据输出方式,elasticsearch是向指定的ElasticSearch进行数据推送,stdout是把收到的数据在控制台进行输出。

3.4 使用配置文件启动

完成配置文件的编写后,在Logstash目录下,执行./bin/logstash -f logstash-test.conf命令,Logstash将会按照配置文件中的配置进行服务启动。

因为在配置文件中配置了file input,所以当服务启动起来后,可以通过执行echo "[2016-12-07 13:41:36,243][INFO][Test.SpringConfigFileLoader:94] spring Config FileLoader load end.(17)" >>/home/test/test.log命令,向配置的文件里面写数据,模拟日志记录来测试Logstash。

 

 

4、Filebeat

4.1 下载并解压

通过执行wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.0.2-linux-x86_64.tar.gz命令,进行Filebeat的下载。

下载完成后执行tar -zxf filebeat-5.0.2-linux-x86_64.tar.gz -C /usr/local命令,把Filebeat解压到/usr/local目录下。

4.2 配置文件修改

Filebeat的配置文件就在解压后的目录下,通过执行vim filebeat.yml命令,来进行配置文件的修改。可参照下面的内容进行修改。

filebeat.prospectors:

- input_type: "log"

 paths:

- /home/Test/default/work_temp/logs/trace.log

 fields:

     appName: default

     logType: trace

 

- input_type: "log"

  paths:

    - /home/Test/default/work_temp/logs/system.log

  fields:

     appName: default

     logType: system

 

- input_type: "log"

  paths:

    -  /home/Test/default/work_temp/logs/engine.log

  fields:

     appName: default

     logType: engine

 

- input_type: "log"

  paths:

    -  /home/Test/default/work_temp/logs/deploy.log

  fields:

     appName: default

     logType: deploy

 

  multiline.pattern: ^\[

  multiline.negate: true

  multiline.match: after

 

output.logstash:

  # The Logstash hosts

  hosts: ["192.168.2.72:5044"]

 

在配置文件中配置了4个input_type用来对4个日志文件进行监控,同时还对监控到的日志数据增加了appName和logType两个参数。

配置文件中的multiline参数,是用来进行数据多行读取,以实现一次能读取全部异常堆栈的目的。

然后在文件中配置了output.logstash,这是把收集到的日志数据发送到Logstash中进行解析,这里配置的端口需要与Logstash中beats插件配置的端口相对应。

4.3 服务启动

在Filebeat所在目录下,执行./filebeat -e -c filebeat.yml命令,就能完成Filebeat的启动。

5、Kibana

5.1 下载并解压

通过执行wget https://artifacts.elastic.co/downloads/kibana/kibana-5.0.1-linux-x86_64.tar.gz命令,进行Kibana的下载。

下载完成后执行tar -zxf kibana-5.0.1-linux-x86_64.tar.gz -C /usr/local命令,把Filebeat解压到/usr/local目录下。

5.2 配置文件修改

Kibana的配置文件位于解压后的conf目录下,执行vim kibana.yml命令进行配置文件的修改。

在配置文件中增加以下配置。

server.host: "0.0.0.0"

elasticsearch.url: "http://192.168.2.72:9200"

5.3 启动服务

在Kibana目录下,执行./bin/kibana命令,启动服务。

完成启动之后可以在浏览器中进行页面访问,地址为http://192.168.2.72:5601/。

 

首次登陆的时候,需要先配置索引,默认使用的索引是logstash-*,并且是基于时间的。建议把基于时间的选项取消,然后点击创建。

完成索引配置后,切换到Discover页面就可以开始进行日志数据的检索。