Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

  ELK6.X版本对log4j2日志系统功能进行了一次整合,它和filebeat的实现方式不同,filebeat是采取读日志文件的方式进行同步到elasticsearch,相当于是读文件同步。现在有了log4j2,我们可以通过socket的方式以log4j2的日志项目作为客户端,发送生成的日志信息到Logstash,从而同步日志信息到elasticsearch。

  本文是windows环境下进行,采用的ELK、分词器都是6.8.6版本的。

一、配置分词器

  在6.4版本后的elasticsearch中,配置IK分词器非常的简单:

  第一步:下载IK分词器:https://github.com/medcl/elasticsearch-analysis-ik/releases

  选择与elasticsearch相同版本的分词器,即6.8.6:

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

 

 

  第二步:下载完成后解压到elasticsearch的文件夹中plugins目录下的analysis-ik,没有就创建,这样分词器就配置成功了,不需要像之前那样再去修改elasticsearch的配置文件夹

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

  第三步:启动elasticsearch

 Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

二、配置Kibana

  第一步:在官网下载Kibana

  https://www.elastic.co/cn/downloads/past-releases/kibana-6-8-6

  下载后直接解压

  第二步:可以在config目录下的kibana.yml中配置kibana的地址和端口号,以及es的地址

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

  第三步:运行bin下面的kibana.bat,启动kibana

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

 

 启动成功后可以看到:

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

 

 三、配置Logstash

  Logstash的配置方式与原来一样,创建一个新的配置文件,连接日志系统,我们在bin目录下创建一个logstash.conf,文件的内容:

 

input {
  tcp {
    mode => "server"
    host => "127.0.0.1"#日志系统的地址
    port => 4568#日志系统的端口号
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "log"#在ES中创建的索引名称
    document_type => "log4j2"
  }
}

 

  然后通过命令启动logstash

logstash -f logstash.conf

 

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

 

 

 四、log4j2的日志系统

  现在大多数项目都开始选用了log4j2的日志工具,这个工具非常方便,至于它的优点我们不详细介绍了,这里就以一个基于springboot的demo给es发送日志信息,

  第一步:引入maven,这里我只贴上了log4j2和lombok的maven

      <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

  第二步:配置log4j2-spring.xml文件

  在log4j2中,弃用了原来的properties配置文件方式,取而代之的是我们原来使用的xml文件,在这里,我们只介绍socket的配置

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1}:%L -%m%n</Property>
    </Properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}" />
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        </Console>
        <!--这个是连接到Logstash的socket配置,IP和端口就是Logstash中创建的配置文件的IP和端口 -->
        <Socket name="logstash-tcp" host="localhost" port="4568" protocol="TCP">
            <PatternLayout pattern="${LOG_PATTERN}" />
        </Socket>
    </Appenders>
    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="logstash-tcp" />
        </Root>
    </Loggers>
</Configuration>

  第三步:编写测试代码,启动项目

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@Slf4j
public class Main {



    @RequestMapping("/getUser")
    public String getUser(){
        log.debug("debug 这个是debug!");
        log.info("info 这个是info!");
        log.warn("warn 这个是warn!");
        log.error("error 这个是error!");

        return "返回成功";

    }
}

五、测试

  启动日志demo后,访问http://localhost:80/getUser,然后我们去kibana界面,kibana界面地址是http://localhost:5601,配置我们的信息

  第一步:创建index

  点击Management → 点击Create index pattern → 输入log(这个就是在Logstash配置文件中创建的index)→ next step

  具体操作如图:

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

 

 

   第二步:创建好index后,我们点击discover就可以看见我们同步的日志信息了

Elasticsearch学习(6) ELK6.X版本+分词器+log4j2的日志系统

上一篇:java-如何将log4j时间格式化为特定时区?


下一篇:小白的springboot之路(十二)、集成log4j2日志