ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

日志通道监控日志异常排查与修复

2022-06-20 02:31:37  阅读:181  来源: 互联网

标签:修复 jar slf4j 排查 SLF4J 日志 datahub monitor


1、背景

Datahub-monitor不打印服务日志。在生产环境中,日志是一个非常重要的监控手段,如果没有日志输出,无疑是非常危险的。

2、出题初步排查

1) 检查log4j2的配置,没有发现任何问题

2)本地代码调试,可以打印日志,控制台可以打印日志,没毛病

3)如果一个pod能正常启动,但是不能打印日志,有没有可能是所有线程进入一种假锁状态。采用jstack统计所有线程状态,没有死锁。

4)log4j2的异步日志会不会有问题呢?修改异步日志为同步日志,不能解决问题。

3、诡异现象

在进行了各种检查以后,并没有发现任何异常,也看不到任何日志信息。此时我尝试将该服务的调度到另一台机器上,服务能够正常打印日志。同样一个镜像,在一台节点上可以打印日志,在另外一台节点上可以打印日志。我试着将pod调度到更多的节点上,诡异的事情产生了,某些节点可以正常打印日志,某些节点则不能正常打印日志。那这是否与k8s节点的环境有关?后续做了许多无用的工作,从cpu负载、jdk版本、线程死锁等多方面排查均没有发现异常。

4、发现端倪

整个服务都不打印日志,唯一一点信息Java进程重启时重定向到out文件里面的控制台输出。一开始就有看过这么几行日志,没有发现什么特别的地方。在启动多个服务后,发现了一些端倪。似乎打印日志服务与不打印日志的服务日志似乎有点不一样。二者bingding的日志jar包顺序有一点点不同。

打印日志
[root@hfa-alpha0015 k8s-config-test]# kubectl logs datahub-monitor-55b77f7768-bchn6  -n odeon
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/odeon/loghub/datahub_monitor_server/datahub_monitor_server-deploy/lib/log4j-slf4j-impl-2.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/odeon/loghub/datahub_monitor_server/datahub_monitor_server-deploy/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
  
不打印日志
[root@k8s001 ~]# kubectl logs datahub-monitor-8ccf4cf88-7mdkh -n odeon
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/odeon/loghub/datahub_monitor_server/datahub_monitor_server-deploy/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/odeon/loghub/datahub_monitor_server/datahub_monitor_server-deploy/lib/log4j-slf4j-impl-2.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

5、问题定位

不打印日志的服务是先绑定的slf4j-log4j12-1.7.25.jar它兼容的是log4j1的工厂类,查看jar包源码可以发现,二者都有StaticLoggerBinder类,所以造成了jiar冲突,产生了同样一个镜像在不同机器上有不同表现得诡异现象。

6、日志问题修复

通过DockerFile文件在原来得镜像上删除冲突jar,重新生成新的镜像。

7、其他问题

在日志问题排查得过程中,log.info.level=debug,短短几个小时就产生了10G左右得日志文件,这给磁盘造成了巨大压力,所以备份当前得日志文件以供后续使用,同时将日志等级改为info。

标签:修复,jar,slf4j,排查,SLF4J,日志,datahub,monitor
来源: https://www.cnblogs.com/xsymin/p/16391989.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有