2025年06月16日
有童鞋请教,log.retention.hour设置72小时(3天),但现在6天都已经过去,却未见kafka对日志进行清理。
告知童鞋检查3个地方,segment.bytes 设置值,分片目录大小,分片目录里面是否只有单个日志文件。
反馈为:segment.bytes 为1G,分片目录大小为700M+,分片目录中只有单个日志文件。
正文内容
2025年06月16日
在此之前日志收集方式采用的logstash安装在各个业务服务器上收集日志直接推到ES的方式(如下图),此模式存在几个弊端:
1、logstash解析消息格式并调用es接口,消耗资源比较多,直接表现为高峰时期CPU飙升至60%,内存占用25%;
2、logstash直接调用ES进行存储,完全依赖ES服务的存储处理速度,如果ES处理太慢或者宕机,可能导致业务服务因资源耗用处理缓慢,甚至出现宕机等雪崩状况;
2025年06月16日
在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:
https://github.com/bosima/ylog/releases/tag/v1.0.2
工程实践中,我们往往还需要对日志进行采集,将日志归集到一起,然后用于各种处理分析,比如生产环境上的错误分析、异常告警等等。在日志消息系统领域,Kafka久负盛名,这篇文章就以将日志发送到Kafka来实现日志的采集;同时考虑到日志分析时对结构化数据的需求,这篇文章还会提供一种输出Json格式日志的方法。
2025年06月16日
上次的 Kafka 重启失败事件,对为什么重启失败的原因似乎并没有解释清楚,那么我就在这里按照我对 Kafka 的认识,从源码和日志文件结构去尝试寻找原因。
首先把导致 Kafka 进程退出的异常栈贴出来:
注:以下源码基于 kafka 0.11.0.2 版本。
我们直接从 index 文件损坏警告日志的位置开始:
2025年06月16日
Kafka 作为一个高吞吐的消息中间件和传统的消息中间件一个很大的不同点就在于它的消息实际上是以日志的方式默认保存在/tmp/kafka-logs文件夹中的。