ELK日志系统设计方案-Log4j日志直推Kafka

这篇具有很好参考价值的文章主要介绍了ELK日志系统设计方案-Log4j日志直推Kafka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ELK 日志系统的常见解决方案:
通常的产品或项目部署至服务器,服务一般会打印日志便于线上问题跟踪。
使用 Log4j 中的自定义 Appender,将服务运行打印的日志直接推送到 Kafka 中。经由 Logstash 消费 Kafka 生产的数据,进行加工过滤后输出到 ElasticSearch 进行日志数据的存储与全文检索。使用 Kibana 对日志数据进行可视化操作。

1. 单点日志系统设计

ELK日志系统设计方案-Log4j日志直推Kafka

  • 相对于 Filebeat 日志收集后输出到 Kafka 的方案,需要服务器存储日志文件。当随着业务复杂性上升,单日日志量也会较大,存储历史日志将占用服务器内存,且不便管理。
  • 使用自定义 Appender 直接打印日志上报 Kafka,去掉了 Filebeat 日志收集,并解决了日志文件存储空间占用的问题。不过也存在因网络传输等原因造成日志丢失的风险。

2. 自定义Appender打包说明

  • 应用场景
    应用于 ELK 日志直推 Kafka 设计场景,自定义 Appender 项目开发打Jar包如下
    log-system-util-1.0-SNAPSHOT-jar-with-dependencies.jar
  • 功能设计
    项目打印日志,通过 log4j 将日志信息推送到 Kafka;
    作为日志服务器监测对接应用存活状态,心跳监测或轮询监测;
  • 本地开发自定义 Appender 项目
    实现 Appender 打印日志上报指定 Kafka 服务,项目本地打 jar 包,已供多应用对接此工具
  • 安装 jar 包到 maven 仓库
    mvn install:install-file
    -Dfile=C:\Users\Zxy\Desktop\CODE\log-system-util-1.0-SNAPSHOT-jar-with-dependencies.jar
    -DgroupId=cn.nascent -DartifactId=log-system-util
    -Dversion=1.0 -Dpackaging=jar

当出现BUILD SUCCESS 时就说明安装成功
命令说明
(1)-Dfile jar包所在路径,需要包含jar包名.例如:xx/xx/xx/**.jar
(2)-DgroupId 指定导入jar时的groupid,可以自定义,cn.nascent就是自定义的
(3)-DartifactId指定导入jar时的artifactId,可以自定义,log-system-util就是自定义的
(4)-Dversion 指定导入jar时的版本号,可以自定义。这里的1.0就是自定义的
(5)-Dpackaging 指定文件类型 ,由于这里是jar包的形式,所以这里得是jar

  • 引入依赖
    pers.niaonao 、 log-system-util 、 1.0.0 就是安装jar包时指定的参数
<dependency>
      <groupId>pers.niaonao</groupId>
      <artifactId>log-system-util</artifactId>
      <version>1.0.0</version>
</dependency>
  • 修改log4j.properties配置文件
#输出到kafka
log4j.logger.pers.niaonao=INFO,KAFKA  
# appender KAFKA
log4j.appender.KAFKA=pers.niaonao.kafka.KafkaLog4jAppender

3. 使用示例

package pers.niaonao;

import org.apache.log4j.Logger;

public class MyAppender {

    private static Logger LOGGER = Logger.getLogger(MyAppender.class);

    public static void main(String[] args) throws InterruptedException {

        int times = 16;
        String mess = "Test My Appender";
        String sendMess = null;
        for (int i = 0; i < times; i++) {
            sendMess = mess + "=======>" + i;
            MyAppender.LOGGER.info(sendMess);
            Thread.sleep(300);
        }
    }
}

注意
(1) 不可以将 Kafka 定义到 rootLogger 中,这会造成程序的卡顿。因此需要另外定义一个 rootLogger。
(2) log4j.logger.后,=之前的的必须是你的包名。当你指定了这个包名之后,那么在这个包下的类产生的日志才会通过下面定义的appender 输送到 kafka 中。
(3) log4j.appender.KAFKA 这条配置,会在LogManager 类加载时,作为一个 appender 添加到以 log4j.logger 后面跟的包名为名的 logger 中去。之后这个包下的类获取 Logger 时会在类 Hierarchy.class 中的 updateParents 方法中将配置文件中的 appender 添加到在类中获取的 logger(Logger.getLogger(xx.class)) 中。

参考文章
ELK日志系统设计方案-Filebeat日志收集推送Kafka
ELK日志系统设计方案-Log4j日志直推Kafka
ELK日志系统设计方案-集群扩展
ELK日志系统部署实现
Powered By niaonao文章来源地址https://www.toymoban.com/news/detail-400148.html

到了这里,关于ELK日志系统设计方案-Log4j日志直推Kafka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • log4j日志框架的使用

    log4j的配置文件可以理解成有2部分 1根日志记录器  2 各appender(输出源)配置 入口 loggerManager的静态代码块 在loggerManager的静态代码块中,完成对配置文件的读取和解析 然后组装成框架的Logger对象、appender对象完成初始化操作 当调用logger.info打印日志时,和logback的流程基本一样

    2024年02月04日
    浏览(47)
  • 用Log4j 2记录日志

    下面代码示例的maven工程中的pom.xml文件中需要增加对Log4j 2的依赖: 配置说明参考文档 https://logging.apache.org/log4j/2.x/manual/configuration.html 配置文件中pattern的详细说明 例如,下面配置文件片段中用到了pattern: pattern的详细说明请参考: https://logging.apache.org/log4j/2.x/manual/layouts.ht

    2024年02月14日
    浏览(85)
  • Log4j疯狂写日志问题排查

    最近有个 Java 系统上线后不久就收到了磁盘使用率告警,磁盘使用率已经超过了 90% 以上,并且磁盘使用率还在不停增长。 由于服务器磁盘被打满,导致了系统正常的业务日志无法继续打印,严重影响了系统的可靠性。 刚开始收到磁盘告警的时候,怀疑是日志级别问题,业务

    2024年02月13日
    浏览(58)
  • 使用Log4j与log4j2配置mybatisplus打印sql日志

    环境:项目非完全spring项目,没有spring的配置文件。执行sql时老是不打印sql语句。因此进行修改,过程比较坎坷,记录一下。 我尝试使用log4j和log4j2进行配置 最终把这两种全部配置记录上 Log4j配置 如果项目用的是log4j需要进行配置打印sql的步骤 首先引入log4j的包 配置一下l

    2024年02月04日
    浏览(52)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多,伴随着容易出现的bug也会越来越多,不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来,方便解决这些问题,否则针对出现的异常无从下手;此时就需要一些日志框架来完成这

    2024年02月15日
    浏览(35)
  • SpringCloud使用log4j日志框架教程

    上一篇文章我们介绍了《SpringCloud使用logback日志框架教程》,本文我们再来介绍下log4j2。 Log4j2是一款流行的Java日志框架,它提供了高度可配置的日志记录功能,支持多种不同的输出格式和目标,比如文件、控制台、数据库等等。Log4j2的设计目标是提供高性能、低延迟的日志

    2024年02月16日
    浏览(45)
  • Java 项目日志实例基础:Log4j

    点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ 介绍几个日志使用方面的基础知识。 1 Log4j 1、Log4j 介绍 Log4j(log for java)是 Apache 的一个开源项目,通过使用 Log4j,我们可以控制日志信息输出到日志文件、也可以控制每一条日志的输出格式

    2024年02月12日
    浏览(37)
  • Mybatis日志Log4j与Logback

    目录 一、Log4j与Logback的区别? 发展历史和维护 二、Slf4j 依赖 三、Logback使用 logback.xml配置文件 四、Log4j使用 五、查看日志内容 发展历史和维护 Log4j是最早的Java日志框架之一,具有较长的历史;然而Log4j 1.x版本在性能和并发性方面存在一些限制,并且已经停止维护。 Logbac

    2024年02月12日
    浏览(74)
  • was下log4j设置日志不输出问题

    WAS 也是用的 commons-logging 日志框架 commons-logging 确定 LogFactory 实现的顺序是 从应用的 META-INF/services/org.apache.commons.logging.LogFactory 中获得 LogFactory 实现 从系统环境中获得 org.apache.commons.logging.LogFactory 获得 LogFactory 实现 从 classpath 下的 commons-logging.properties 文件中获得 LogFactory 实

    2024年02月08日
    浏览(45)
  • 1.12 springboot 整合log4j打印日志

    1.除去springboot自带的日志 2.添加log4j依赖 3. 添加log4j依赖对应的配置文件log4j.properties[api模块下的resources文件夹下创建] 4.log4j日志应用

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包