【flume】高可用和日志采集会出现的其他问题

flume高可用详解

在数仓项目中,flume担任着日志采集任务,埋点数据生成日志发送到日志采集服务器
flume将日志服务器上的日志采集到我们想要存放的位置(假设采集到的HDFS上)
在这里插入图片描述

1.假设现在有两台日志采集服务器,每台服务器上都部署Agent(第一级),将数据汇总到第二级Agent上

第二级Agent将数据采集到HDFS上。
如果第二级Agent宕机后,数据将无法采集到,此时需要部署flume高可用模式,解决这个问题
在这里插入图片描述

2.增加一个节点,部署agent04。假设agent03宕机,agent01、agent02的k2会自动切换到agent04上。从而解决因agent03宕机后无法及时采集到数据的问题

3.具体配置如下

1)agent01、agent02配置

a1.sources = s1
a1.channels = c1
a1.sinks = k1
#sources配置 假设有三类日志文件
a1.sources.s1.channels = c1
a1.sources.s1.type = TAILDIR
a1.sources.s1.filegroups = g1 g2 g3
a1.sources.s1.filegroups.g1= /log01/.*log
a1.sources.s1.filegroups.g2= /log02/.*log
a1.sources.s1.filegroups.g3= /log03/.*log
a1.sources.s1.positionFile = /偏移量文件所在路径
a1.sources.s1.fileHeader = true
a1.sources.s1.fileHeaderKey = filepath
a1.sources.s1.batchSize = 200
#channels 配置
a1.channels.c1.type = file
a1.channels.c1.capacity = 1000000
a1.channels.c1.transactionCapacity = 100
a1.channels.c1.checkpointDir = /Checkpoint信息保存目录
a1.channels.c1.dataDirs = /Event数据缓存目录
#sink 配置
a1.sinks = k1 k2
a1.sinks.k1.type = avro
a1.sinks.k1.channel = c1
a1.sinks.k1.hostname = 03节点名称
a1.sinks.k1.port = 4545
a1.sinks.k2.type = avro
a1.sinks.k2.channel = c1
a1.sinks.k2.hostname = 04节点名称
a1.sinks.k2.port = 4545
#sink processor - fail over 失败配置
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
#对两个sink分配不同的优先级
a1.sinkgroups.g1.processor.priority.k1 = 200
a1.sinkgroups.g1.processor.priority.k2 = 100
#主sink失败后,停用惩罚时间
a1.sinkgroups.g1.processor.maxpenalty = 5000

2)agent03、agent04配置

a1.sources = s1
a1.channels = c1
a1.sinks = k1
#source 配置
a1.sources.s1.type = avro
a1.sources.s1.bind= 0.0.0.0
a1.sources.s1.port = 4545
a1.sources.s1.channels = c1
a1.sources.s1.interceptors = i1
a1.sources.s1.interceptors.i1.type = timestamp
#channel 配置
a1.channels.c1.type = file
a1.channels.c1.capacity = 1000000
a1.channels.c1.transactionCapacity = 100
a1.channels.c1.checkpointDir = /Checkpoint信息保存目录
a1.channels.c1.dataDirs = /Event数据缓存目录
#sink配置
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = hdfs://要存储的位置
a1.sinks.k1.hdfs.filePrefix = 前缀
a1.sinks.k1.hdfs.fileSuffix = 后缀
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0
#配置压缩
a1.sinks.k1.hdfs.fileType = CompressedStream
a1.sinks.k1.hdfs.codeC = gzip
#数据格式
a1.sinks.k1.hdfs.serializer = TEXT

4.启动顺序

先启动agent03、agent04
[root@nodo03 apache-flume-1.6.0-bin]# bin/flume-ng agent -n a1 -c conf -f myconf/agent03.conf -Dflume.root.logger=INFO,console
[root@nodo04 apache-flume-1.6.0-bin]# bin/flume-ng agent -n a1 -c conf -f myconf/agent04.conf -Dflume.root.logger=INFO,console
再启动agent01、agent02
[root@nodo01 apache-flume-1.6.0-bin]# bin/flume-ng agent -n a1 -c conf -f myconf/agent01.conf -Dflume.root.logger=INFO,console
[root@nodo02 apache-flume-1.6.0-bin]# bin/flume-ng agent -n a1 -c conf -f myconf/agent02.conf -Dflume.root.logger=INFO,console

可能出现的其他问题

1.如果第一级agent宕机

第一级agent无法实现flume高可用,为了缩短日志积压时间,可采用脚本监控方法。
运行监控脚本,实时监控agent进程,如果发现进程宕机,及时重启该任务,或者发送警报、短信等方式通知运维人员,及时解决问题

2.日志采集不及时

当日志产出速度高于agent.sink输出是,source采集不及时就会造成日志积压,agent就会无法及时的采集到的最新的日志数据。
解决方向:1.拓展带宽,增加sink传输速率
2.采用多级agent,上级agent采用轮询的方式将日志发送到下级多个agent。这样会有多个通道向HDFS发送数据,提高传输速率。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EdgeCity_TF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值