flume 使用 exec 采集容器日志,转储磁盘

flume 使用 exec 采集容器日志,转储磁盘

在该场景下,docker 服务为superset,flume 的sources 选择 exec , sinks选择 file roll 。

任务配置

具体配置文件如下:

#simple.conf: A single-node Flume configuration

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = exec
# exec source 监控命令是tail -f ,日志文件可随意指定,这里选择的是容器服务的日志文件
a1.sources.r1.command = tail -F /data/docker/containers/e511e3e4b3445efeb38fe822ac086dfc5ebb8bdc4a725dc6e2969ef2092c78ec/e511e3e4b3445efeb38fe822ac086dfc5ebb8bdc4a725dc6e2969ef2092c78ec-json.log

# Describe the sink
a1.sinks.k1.type = file_roll
#指定文件转存储目录,可自建
a1.sinks.k1.sink.directory = /home/test/log
# one day roll once 一天滚动一次,为了防止转储日志文件过大,按天进行文件滚动
a1.sinks.k1.sink.rollInterval = 86400
#a1.sinks.k1.sink.pathManager = superset
# 定义日志文件后缀
a1.sinks.k1.sink.pathManager.extension = log
# 定义日志文件前缀
a1.sinks.k1.sink.pathManager.prefix = superset-


# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

其中,关键配置已注释,其中file_roll sinks 中 type、sink.directory是必配,其他都是选配,可参考官网文档

https://flume.apache.org/releases/content/1.8.0/FlumeUserGuide.html

配置文件中exec source监测的日志文件,可以使用如下命令获取(前提是docker环境已部署,且有应用在运行)

docker inspect --format='{{.LogPath}}' <容器id>

任务执行

bin/flume-ng agent -c conf -f ./job/exec-memory-logger.conf -n a1

//使用nohup &后台运行,不占用终端,但会生成nohup.out日志文件
nohup  bin/flume-ng agent -c conf -f ./job/exec-memory-logger.conf -n a1 &

到转储目录下查看,

superset- 是配置前缀,log是配置后缀,中间是时间戳(框架默认创建时间)

之所以有多个,是因为多次启停了flume agent任务。

实时性观察

tail -f 容器服务日志文件

同时tail -f 转储后的日志文件

发现两边有一个大概10S内的时差,容器服务日志产生后,大概5-6s才会在转储文件tail -f 到

经验总结

1 该方式转储日志文件基本能保证实时,时差大概5-6s(本机测试,未考虑网络时延,仅供参考)

2 flume 停止后在启动,会生成新的转储文件

3 exec source 不支持断点续传,停止后再启动,停止时间段数据不会处理

相关推荐
Acrelhuang21 分钟前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网
皓74129 分钟前
服饰电商行业知识管理的创新实践与知识中台的重要性
大数据·人工智能·科技·数据分析·零售
Mephisto.java32 分钟前
【大数据学习 | kafka高级部分】kafka的kraft集群
大数据·sql·oracle·kafka·json·hbase
Mephisto.java34 分钟前
【大数据学习 | kafka高级部分】kafka的文件存储原理
大数据·sql·oracle·kafka·json
ycsdn101 小时前
Caused by: org.apache.flink.api.common.io.ParseException: Row too short:
大数据·flink
DolphinScheduler社区3 小时前
Apache DolphinScheduler + OceanBase,搭建分布式大数据调度平台的实践
大数据
时差9534 小时前
MapReduce 的 Shuffle 过程
大数据·mapreduce
kakwooi5 小时前
Hadoop---MapReduce(3)
大数据·hadoop·mapreduce
数新网络5 小时前
《深入浅出Apache Spark》系列②:Spark SQL原理精髓全解析
大数据·sql·spark
昨天今天明天好多天10 小时前
【数据仓库】
大数据