7.4.3、Flume__flume的使用,日志数据的集成,监控目录,拦截器

flume系列文章目录


作者:Loves_dccBigData


前言


提示:以下是本篇文章正文内容

官网:flume.apache.org–>documentation–>flume user guide

根据需求,首先确定用哪个source和sink,然后去官网查找对应参数配置,有些参数写,有些可以不写

1、测试,监控一个目录,将目录下增加数据打印出来(日志)

配置文件:source选择sqooling(监测目录),channels选择memory(内存),sinks选择logger(控制台)

#首先给Agent起一个名字 a1
#分别给source,channal,sink起名字
#可能包含多个source,channal,sink,加s
a1.sources=r1
a1.channels=c1
a1.sinks=k1
#分别对source,channal,sink配置
#配置source
#将source的类型指定为spooldir,监听目录下文件变化
#因为每个组件可能会出现相同的属性名称,所以在对每个组件进行配置时
#需要加上agent的名字.sources.组件名字.属性=属性值
a1.sources.r1.type = spooldir
#监听的数据来源路径
a1.sources.r1.spoolDir = /root/data/
#配置channnel
#使用memory作为channels组件,内存
a1.channels.c1.type = memory
#配置sink
#使用logger作为sink组件,将收集结果打印到控制台
a1.sinks.k1.type = logger
#组装,就是将source,channal,sink关联起来
#将source的属性channels指定为c1
a1.sources.r1.channels = c1
#将sink的属性channel指定为c1
a1.sinks.k1.channel = c1

执行任务,启动flume

-n:agent的名字 -f:配置文件 flume-ng agent -n a1 -f ./spoolingtest.conf -Dflume.root.logger=DEBUG,console

新建/root/data目录

mkdie /root/data 在/root/data/目录下新建文件,输入内容,观察flume进程打印的日志

# 随意在a.txt中加入一些内容

vim /root/data/a.txt 采集过的文件会自动加上completed后缀,用于标记 eg:
3.xtt.COMPLETED,可以使用source参数修改

2、设置参数,拦截器,正则表达式

#首先给Agent起一个名字 a1
#分别给source,channal,sink起名字
#可能包含多个source,channal,sink,加s
a1.sources=r1
a1.channels=c1
a1.sinks=k1
#分别对source,channal,sink配置
#配置source
#将source的类型指定为spooldir,监听目录下文件变化
#因为每个组件可能会出现相同的属性名称,所以在对每个组件进行配置时
#需要加上agent的名字.sources.组件名字.属性=属性值
a1.sources.r1.type = spooldir
#监听的数据来源路径
a1.sources.r1.spoolDir = /root/data/
#采集过的数据后缀
a1.sources.r1.fileSuffix = .dcc
a1.sources.r1.fileHeader = true
#设置拦截器,作为source的属性,取名为i1
a1.sources.r1.interceptors = i1
#将拦截器i1的类型设置为regex_filter正则
a1.sources.r1.interceptors.i1.type = regex_filter
#指定正则表达式,不能加" "
a1.sources.r1.interceptors.i1.regex = [0-9]{
    
    3,5}
#参数,默认为false,匹配放行,不匹配丢掉
#设置参数true,匹配丢掉,不匹配放行
a1.sources.r1.interceptors.i1.excludeEvents = true
#配置channnel
#使用memory作为channels组件,内存
a1.channels.c1.type = memory
#配置sink
#使用logger作为sink组件,将收集结果打印到控制台
a1.sinks.k1.type = logger
#组装,就是将source,channal,sink关联起来
#将source的属性channels指定为c1
a1.sources.r1.channels = c1
#将sink的属性channel指定为c1
a1.sinks.k1.channel = c1

3、监控目录变化,将监控的日志写到HDFS

配置文件:source选择sqooling(监测目录),channel选择memory(内存),sink选择HDFS

#首先给agent起一个名字a1
#定义三个组件的名字
a1.sources=r1
a1.channels=c1
a1.sinks=k1
#配置sources
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /root/data/
#配置channels
a1.channels.c1.type = memory
#配置sinks
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /flume/input1/
#设置参数
#设置60s刷一个文件
a1.sinks.k1.hdfs.rollInterval = 60
#文件大小为10240b刷新文件,10kb
a1.sinks.k1.hdfs.rollSize = 10240   
#1000行刷新文件
a1.sinks.k1.hdfs.rollCount = 1000   
#输出格式
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.fileType = DataStream
#组装
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

4、测试

source选择exec(命令),channel选择memory(内存),sink选择logger(打印)
exec后面跟一个命令,一般跟tail -f 输出

#首先给agent起一个名字a1
#定义三个组件的名字
a1.sources=r1
a1.channels=c1
a1.sinks=k1
#配置sources
a1.sources.r1.type = exec
#指定一个命令
a1.sources.r1.command = tail -f /root/data/1.txt
#配置channels
a1.channels.c1.type = memory
#配置sinks
a1.sinks.k1.type = logger
#组装
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

猜你喜欢

转载自blog.csdn.net/nerer/article/details/120944093