实现 logback + kafka + ELK 的SSH项目日志改造
1 简介
前言:
SSH框架中已集成logback,部门已搭建好Kafka + ELK平台(后称日志平台),因为需要容器化部署项目,日志不能像以往写在本地日志文件,而是需要通过Kafka+Logstash将日志消息收集存储在日志平台。不同于Springboot项目自带logback,改造方便,SSH项目需要自己改造日志工具并且集成kafka,有诸多不同地方,文章主要是对改造过程及出现问题做介绍。
前序知识:名词的简单介绍
- logback : java日志组件,是系统中编写的日志打印代码的具体实现,可以单独或和日志接口(如slf4j)搭配实现日志输出。
- ELK:Elasticsearch、Logstash、Kibana的简称,是一套应用组件,三者构成一个日志分析管理平台。
- Elasticsearch:分布式搜索引擎,即实现对已收集的日志数据的搜索
- Logstash:数据收集处理引擎,即实现对日志数据的收集、处理、存储
- Kibana:可视化平台,即实现对已收集日志数据的可视化展示
- Kafka:实时数据处理系统,即充当消息中间件(消息队列)的功能,Logstash通过Kafka传递日志数据,Kafka起缓冲数据作用,弥补仅靠Logstash可能出现的性能和可靠性问题。
更详细的介绍:
- 关于kafka + ELK: 基于Kafka+ELK搭建海量日志平台、
- 关于Kafka、消息队列:Kafka简明教程
- 关于SSH项目(非SpringBoot项目)集成logback的集成过程:log4j2升级为logback,logback+slf4jcommons-logging+Jboss-logging(SSH项目)
2 改造步骤及问题解决
2.1 引入相关依赖
- logback-kafka-appender:提供给logback的appender,顾名思义,用于配置输出到kafka的appender。
appender决定日志要输出到哪,日志自带的常见的如:RollingFileAppender,输出到文件;ConsoleAppender,输出到控制台。
- logstash-logback-encode :提供给logback的编码器,输出的日志通过该编码器编码后被Logstash收集,存储。
- jackson:我们日志采用的是json格式,所以在logback中使用的日志encoder用的logstash.encoder.LoggingEventCompositeJsonEncoder,需要依赖处理Json格式类库jackson,详细配置解释见2.2。
- kafka-clients:系统的生产的日志是消息的生产者,我们要将生产出来的日

本文介绍了如何在SSH项目中改造日志系统,使其能够通过Kafka将日志数据发送到ELK平台进行收集和分析。改造涉及引入logback-kafka-appender和logstash-logback-encoder依赖,配置logback配置文件以添加Kafka Appender,并设置相关参数。改造完成后,日志将通过Kafka实时传输到Logstash,进而存储到Elasticsearch并可在Kibana中可视化查看。
最低0.47元/天 解锁文章
596

被折叠的 条评论
为什么被折叠?



