背景:程序模块部署,每个模块都有自己的日志存放到本地,当需要进行排查问题的时候,可能需要到各个服务器上去下载日志,然后进行排查,费时。
方案:使用ELK方案,①采用flume采集日志,然后将日志存入消息队列或直接在程序中使用logback连接kafka;②使用logstash从kafka中读取数据,进行一定的处理;③logstash处理数据后进入到ElasticSearch中;
我们这边采用的开发框架基本都是基于springboot和springcloud等一些列的框架,我们部署的程序模块会越来越多,不想每一次部署模块的时候都去加flume相关配置进行采集日志,如果到新的服务器上部署的时候还得重新安装flume,我们使用框架中的日志框架采用logback,支持与ELK的集成方案。
架构图参考地址:https://www.cnblogs.com/wangzhuxing/p/9665905.html
Logback+kafka+ELK的搭建参考:https://www.jianshu.com/p/d1be3364f32d,里面有详细的搭建情况,采用的springcloud可以进行服务跟踪sleuth。
引入logback进行日志记录,引入lombok使用@Log4j注解,引入logstash-logback-encoder进行日志输出格式化为json字符串输出,引入logback-kafka-appender与kafka集成。