基于ELK(es、logstash、kibana)和springboot2、log4j2实现日志可视化

搭建ELK平台

这部分参考作者另一个采坑博客

ELK部署笔记(docker-compose部署)

建一个采用log4j2框架的SpringBoot项目

这部分没啥好说的,注意几个要点

1、确定项目采用了你配置的log4j2框架,而不是用的默认的logback或者其他日志框架

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions><!-- 去掉logback配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--log4j2-->
        <dependency> <!-- 引入log4j2依赖 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

2、如果你的配置文件不在默认resources文件夹下,记得在applicaton.yml指定配置文件位置

#日志配置
logging:
  config: classpath:log4j2.xml

本日志配置文件是在resources文件夹下的,理论上以上配置可以不用配置,只是演示配置方式

3、log4j2配置要点

<appenders>        
      <Socket name="logstash" host="logstash服务器IP地址" port="自定义端口" protocol="TCP">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <JsonLayout properties="true"/>
      </Socket>

</appenders>

<loggers>
      <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="logstash"/>
      </root>
</loggers>

主要是在appenders里添加socket和loggers里添加appender-ref,当然也有其他方式可以发送日志给logstash,这里不作展开。

4、注意日志记录用的类

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Logger logger=LoggerFactory.getLogger(getClass());  

当然如果用到了lombok的  import lombok.extern.slf4j.Slf4j  也可以

配置Logstash

1、按照ELK部署笔记(docker-compose部署)部署

2、到挂载的目录下,修改 logstash.conf 配置文件

input {
    tcp {
       #host =>"你的服务器ip地址"
       port => 9600
       codec => json {
             charset => "UTF-8"
         }
      }
}
filter{
   json{
      source => "message"
   }
}
output {
     elasticsearch {
        #action => "index"
        #manage_template => false
        hosts => "es:9200"
        index => "logstash-%{+YYYY-MM-dd}"
        #document_type => "logstash"
     }
     #stdout { codec=> rubydebug }
}

其中input的port配置一定要和log4j2配置文件中的端口对应上,我这里自行取得9600,其他端口也可以。记得到云服务器的安全组配置一下

操作Kibana

到了这里,你可能还是很懵逼,怎样才能在界面上看到自己的日志,而不是去服务器输命令搂。

1、Kibana-->Management-->Create index pattern

我这是第二步做好了,所以next step可以点

最开始是不行的,需要把第二步搞定

2、按照官网倒点数据到es,请戳Loading sample data  

这个链接不一定长久有效,但是可以比较下面的链接,自行查找到Loading sample data

https://www.elastic.co/guide/en/kibana/7.1/tutorial-load-dataset.html#tutorial-load-dataset

该网站搞两步,第一:Loading sample data,第二:Defining your index patterns

做完后,你会发现next step可以点了

大功告成

最后测试步骤如下

1、保证elk三大docker服务都启动好了

2、启动你的SpringBoot服务 

3、访问一个带有日志记录的接口

可以看到日志被记录到了Kibana平台上

 总结:查阅数篇博客和官网,花了一天时间,终于搭了一个可以跑通的elk日志平台。当然还是有很多细节需要处理。阅读本文,还是需要一定的linux基础,有些常识性细节博主省略了,如有疑问,欢迎留言讨论。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值