本次遇到的问题描述,日志采集同步时,当单条日志(日志文件中一行日志)超过2M大小,数据无法采集同步到kafka,分析后,共踩到如下几个坑。
1、flume采集时,通过shell+EXEC(tail -F xxx.log 的方式) source来获取日志时,当单条日志过大超过1M时,source端无法从日志中获取到Event。
2、日志超过1M后,flume的kafka sink 作为生产者发送给日志给kafka失败,kafka无法收到消息。
以下针对踩的这两个坑做分析,flume 我使用的是1.9.0版本。 kafka使用的是2.11-2.0.0版本
问题一、flume采集时,通过shell+EXEC(tail -F xxx.log 的方式) source来获取日志时,当单条日志过大超过1M时,source端无法从日志中获取到Event。flume的配置如下:
...... agent.sources = seqGenSrc ...... # For each one of the sources, the type is defined agent.sources.seqGenSrc.type = exec #agent.sources.seqGenSrc.command = tail -F /opt/logs/test.log|grep businessCollection|awk -F '- {' '{print "{"$2}' agent.sources.seqGenSrc.command = tail -F /opt/logs/test.log|grep businessCollection agent.sources.seqGenSrc.shell = /bin/bash -c agent.sources.seqGenSrc.batchSize = 1 agent.sources.seqGenSrc.batchTimeout = 90000 ......