elk介绍及其安装教程


ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products

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

·        Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

·        Kibana 也是一个开源和免费的工具,它Kibana可以为Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

 Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

安装过程

   1.添加一个用户elk,并切换至该用户

 useradd elk

 passwd elk

     2.解压下面三个文件

kibana-6.2.4-linux-x86_64.tar.gz 

logstash-6.2.4.tar.gz

elasticsearch-6.2.4.tar.gz 

  3.安装es

     修改配置文件:

network.host: 192.168.94.151

http.port: 9200

   启动: ./elasticsearch -d

访问http://192.168.94.151:9200/   启动成功


  4.安装Logstash

 

其实它就是一个收集器而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java代码中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。

在config下新建一个配置文件:

   从本地读取日志

  [elk@localhost config]$ vi mylogstash-disk.conf

input {

    file {

       type => "log"

       path => "/logs/*.log"

       start_position => "beginning"

   }

}

output {

 stdout {

  codec => rubydebug { }

  }

 elasticsearch {

   hosts => "192.168.94.151"

   index => "log-%{+YYYY.MM.dd}"

  }

}

    从服务读取日志  

安装log4j插件:bin/logstash-plugin install logstash-input-log4j

   vi mylogstash-server.conf

input {

  #For detail config for log4j as input,

  #See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html

 log4j {

   mode => "server"

   host => "192.168.94.151"

   port => 4567

  }

}

filter {

 #Only matched data are send to output.

}

output {

  #For detail config for elasticsearch as output,

  #See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

 elasticsearch {

   action => "index"         #The operation on ES

   hosts  => "192.168.94.151:9200"   #ElasticSearch host, can be array.

   index  =>"applog"         #The index towrite data to.

  }

}

启动:

 ./bin/logstash -f config/mylogstash-server.conf

后台启动用nohup  ./bin/logstash  -f config/mylogstash-server.conf  &

pom.xml,很简单,只用到了Log4j库:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

log4j.properties,将Log4j的日志输出到SocketAppender,因为官网是这么说的:


log4j.rootLogger=INFO,console

# for package com.demo.elk, log would be sent to socket appender.
log4j.logger.com.demo.elk=DEBUG, socket

# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4567
log4j.appender.socket.RemoteHost=192.168.94.151
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000

# appender console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p] [%l] %m%n

注意:这里的端口号需要跟Logstash监听的端口号一致,这里是4567。

Application.java,使用Log4j的LOGGER打印日志即可:

package com.demo.elk;

import org.apache.log4j.Logger;

public class Application {
    private static final Logger LOGGER = Logger.getLogger(Application.class);
    public static void main(String[] args) throws Exception {
        for (int i = 0; i < 10; i++) {
            LOGGER.error("Info log [" + i + "].");
            Thread.sleep(500);
        }
    }
}

5.安装kibana

修改配置文件

server.port: 5601

server.host: “192.168.94.151”

elasticsearch.url: http://192.168.94.151:9200

   启动

./bin/kibana

然后就可以通过192.168.94.151:5601访问了

为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里我输入之前配置的Index名字applog或者log*,Kibana会自动加载该Index下doc的field,并自动选择合适的field用于图标中的时间字段。


猜你喜欢

转载自blog.csdn.net/u012326462/article/details/80455326