1. 程式人生 > >Docker容器內flume source tail + sed 快取問題

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
這裡應該就可以歡快的跑起來了,祝好