Springboot通过log4j2+logstash整合日志到Elasticsearch中

Springboot常用于spring-cloud中,大家在使用spring-cloud多服务的时候常常会存在一个问题,就是某个服务报错了,去捞日志的时候要一个一个服务去监控或者捞日志排查错误信息,这样很耗时耗力,Elasticsearch查询数据非常方便,如果能够将日志保存到Elasticsearch中,出现问题时根据相关关键字和时间对查询日志会节省大量时间,通过Kibana或者head插件通过浏览器查询,不需要登录到服务端,操作简单方便,本文实现了springboot+log4j2+ELK(Elasticsearch+Logstash+Kibana)将日志集成到Elasticsearch中,ELK如何安装部署可以参考作者之前的文章:

ELK(Elasticsearch+Logstash+Kibana)安装、使用_醉酒横刀的博客-CSDN博客

1、Springboot搭建

        sprignboot搭建大家可以在网上找到很多例子,此处不再赘述。

2、Springboot集成log4j2

        集成log4j需要以下几个步骤

        1)引入pom依赖

        需要将starter和stater-web中引入的log包排除,再引入log4j2依赖包


    org.springframework.boot
    spring-boot-starter
    2.1.5.RELEASE
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    


    org.springframework.boot
    spring-boot-starter-web
    2.1.5.RELEASE
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    


    org.springframework.boot
    spring-boot-starter-log4j2
    2.1.5.RELEASE

        2)配置文件修改

        在appliction.yml中新增如下配置

logging:

  config: classpath:log4j2.xml
  level:
    com:
      test: debug

        2)配置文件修改

        log4j2.xml配置文件中内容





    

    
    
        
        

        
        
        
        
    

    
        
            
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        
        
            
        
    

    
    
    
        
        
            
        
        
        
        
            
        

        
            
            
            
            
            
        
    

3、logstash配置修改及启动

         1)配置文件修改

                在logstash的bin目录新建spring-boot-logstash.yml文件,具体内容如下

                /logstash-7.11.0/config/spring-boot-logstash.yml

                注意修改ip地址和端口号,output中的index会根据配置的命名规则自动创建

                

input {
  tcp {
    #模式选择为server
    mode => "server"
    #ip和端口根据自己情况填写,端口默认4560,对应下文logback.xml里appender中的destination
    host => "192.168.36.129"
    port => 4560
    #格式json
    codec => json_lines
  }
}
filter {
  #过滤器,根据需要填写
}
output {
  elasticsearch {
    action => "index"
    #这里填写es的地址,多个es要写成数组的形式
    hosts  => ["192.168.36.129:9200","192.168.36.130:9200","192.168.36.130:9200"]
    #存放的索引名称,这里每天会创建一个新的索引保存当天的日志
    index => "springfate-log-%{+YYYY.MM.dd}"
  }
}

         2)logstash启动

       切换到bin目录下进行启动, 启动命令:

        cd ../logstash/bin

./logstash -f /opt/ELK7.11.0/logstash-7.11.0/config/spring-boot-logstash.yml

        启动成功后日志如下图:

        Springboot通过log4j2+logstash整合日志到Elasticsearch中_第1张图片

 

4、log4j2连接logstash

        log4j2连接logstash需要在log4j2.xml中配置如下图所示即可,具体配置在上面的配置中有

Springboot通过log4j2+logstash整合日志到Elasticsearch中_第2张图片

 

5、Kibana查询日志数据

        启动springboot项目,启动Elasticsearch、Logstash、Kibana,防火墙关闭或者开放相应端口

之后可以监控logstash的日志发现springboot的日志会抽取到es中

       1)spring启动日志

        我在springboot打印日志,每隔20秒打印一次日志

        2)logstash抽取数据日志

        在logstah日志中可以监测到日志抽取,(我这边日志json格式转换有问题,还未解决)

 

        3)Kibana查看Elasticsearh中新建的index

        在kibana中可以看到以日期为单位新建的索引,日志在里面

Springboot通过log4j2+logstash整合日志到Elasticsearch中_第3张图片

 

        4)Kibana查询日志数据

        登录Kibana

Springboot通过log4j2+logstash整合日志到Elasticsearch中_第4张图片

 按照之前新建的查询规则进行搜索可以搜索出相关日志新星

Springboot通过log4j2+logstash整合日志到Elasticsearch中_第5张图片

至此,springboot+log4j2+ELK(Elasticsearch+Logstash+Kibana)简单整合已完成。

 

你可能感兴趣的:(elasticsearch,spring,boot,log4j)