Docker容器内flume source tail + sed 缓存问题

背景

在使用docker 容器搭建nginx + flume + kafka的日志收集平台时,使用lua提取http request中的header和body,输出json时会有 “\x22”字符存在, 在flume.source.command中加入tail -f access.log | sed ‘s/\\x22/\\”/g’ 时总会有延时的感觉。

尝试方法

1: 各种batchSize和timeOut, 没有用
2: 设置中间文件,均无用

解决方法

原因是由于shell命令的缓冲区造成的, 可以使用stdbuf 关闭。具体方法如下:
1. 构造tail_sed.sh, 文件内容如下: stdbuf –input=0 –output=0 tail -F —disable-inotify /xxx/xxx/…/access.log | stdbuf –input =0 –output=0 sed ‘s/\\x22/\\”/g’
2. flume source配置 t2k.sources.s1.command=/bin/sh -c /xxx/xxx/…/tail_sed.sh
这里应该就可以欢快的跑起来了,祝好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值