Flume
1 概述
Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的软件。
Flume核心 :
- 数据源(source)
- 目的地(sink)
- 数据传输通道(channel)
Flume版本 :
- FlumeOG(0.9X版本的统称) , 老版本
FlumeNG(1.X版本的统称) , 该版本常用
2 . 运行机制
Flume 系统中核心的角色是 agent,agent 本身是一个 Java 进程,一般运行在日志收集节点。

每一个 agent 相当于一个数据传递员,内部有三个组件:
Source:采集源,用于跟数据源对接,以获取数据;
Sink:下沉地,采集数据的传送目的,用于往下一级 agent 传递数据或者往最终存储系统传递数据;
Channel:agent 内部的数据传输通道,用于从 source 将数据传递到 sink;在整个数据的传输的过程中,流动的是 event,它是 Flume 内部数据传输的最基本单元
一个完整的 event 包括:event headers、event body、event 信息,其中event 信息就是 flume 收集到的日记记录。
3. Flume采集结构图
3.1 简单结构(单个agent)

3.2 复杂结构(多级agent串联)

4. Flume的安装部署
- 将安装包放到/export/servers下 , 解压到当前文件夹
- 配置环境变量JAVA_HOME , 将配置文件中注释掉的JAVA_HOME放开并修改即可
export JAVA_HOME=/export/servers/jdk1.8.0_65
测试 : - 1 、 先在 flume 的 的 conf 目录下新建一个文件
vi netcat-logger.conf
#从网络端口接收数据,下沉到logger
#采集配置文件,netcat-logger.conf
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = logger
# 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
启动命令:
bin/flume-ng agent --conf conf --conf-file conf/netcat-logger.conf --name a1 -Dflume.root.logger=INFO,console
传入数据:
telnet localhost 44444
如果没有telnet , 下载即可: yum -y install telnet
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Hello world! <ENTER>
OK
看到返回OK说明配置成功
-
2 、 启动 agent 去采集数据
首先切换到flume目录下 , 然后执行下列命令
bin/flume-ng agent -c conf -f conf/netcat-logger.conf -n a1 -Dflume.root.logger=INFO,console--conf/-c: 指定flume自身的配置文件所在目录--conf-file/-f: 指定我们所描述的采集方案--name/-n: 指定我们这个agent的名字-Dflume.root.l

本文详细介绍Flume作为高可用、高可靠日志采集系统的运行机制、安装部署及实战案例,涵盖多级Agent串联、负载均衡、容错处理、日志拦截器应用,以及如何高效配置采集策略。
最低0.47元/天 解锁文章
2145

被折叠的 条评论
为什么被折叠?



