绊脚石乃是进身之阶。

logstash每天固定时间出现异常,导致重复消费

Logstash | 作者 wangxinrong | 发布于2019年06月19日 | 阅读数:2243

突然有一天开始ES中索引日志量翻了3-5倍。
查了原因发现是logstash消费超时,数据已消费并写入ES,但未提交offset。
kafka认为这个消费者已死,做rebalance,导致这部分消息被其他logstash重复消费,有好几次,导致ES中有4、5份重复记录。
之前类似的问题也出现过一次,当时调整了logstash的超时时间、批量处理大小限制后恢复了,但这次调整这些参数也没有作用,我观察到的现象是,每天8点、20点都会出现一次这样的情况,不需要调整参数,只要重启logstash就会恢复,然后再到当天的20点或者8点就会再次出现问题。
8点有问题还可以理解,可能是因为索引按天分割是每天8点开始日志写入新索引,但20点出问题就完全不知道有什么可能了。
 
另外顺带问下,我用的logstash 5.5.2版本,尝试打开debug日志时有这个错误提示:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
看网上说这个是5.5.2的bug,但是我换成5.4.3版本以后还是有这个提示,导致一直没办法开启debug日志查原因。
 
1.png
已邀请:

Reilee - 在日devops

赞同来自:

只是猜测20:00 = 8:00PM
 

God_lockin

赞同来自:

猜测是跨天的时候日期计算消耗太多资源让进程hang住了导致的?

wangxinrong

赞同来自:

晚上的20:00和早上的8:00这两个时间段都存在问题,8:00日志会写入新索引,但20:00并没有往新索引里写。
关键出现问题的时候,logstash没有日志没办法根据日志查原因,也不知道怎么参数调优,我试了调整批量处理大小、超时时间等都没有效果,最后发现起效果的只是重启操作。

Reilee - 在日devops

赞同来自:

关于debug log看一下logstash.yml里path.logs是不是没有配置。
如果没有指定默认是只log到console

wangxinrong

赞同来自:

日志路径是有设置的,启动日志是会在日志文件里的,然后就基本不会输出其他日志了。

Reilee - 在日devops

赞同来自:

貌似启动时找不到 log4j2.properties
这个文件有没有放在 path.config 里?

wangxinrong

赞同来自:

log4j2.properties是在logstash目录下的,和logstash.yml、jvm.options在同一级目录。我都是使用的logstash默认配置,5.5.2  5.4.3都有这个问题,难道是5.x版本的logstash都存在的一个bug?

要回复问题请先登录注册