flume如何监控多个动态变化的日志文件


同时监控多个文件并下沉到hdfs配置的agent:

这种功能应用场景:是对历史文件进行迁移使用,并不适用实时收集场景,只能通过拆分日志实现准实时,而且必须要把要存储的文件扔进被flume监控的文件夹才能被自动监控并发送到hdfs中存储起来。整个文件数据传输完毕后,文件后缀会被更改成后缀为.COMPLETED的文件。此后缀在设置source时可以通过其fileSuffix关键字自定义,默认是COMPLETED

采集源,即source——监控文件目录 : spooldir

下沉目标,即sink——HDFS文件系统 : hdfs sink

source和sink之间的传递通道——channel,可用file channel 也可以用内存channel

配置文件名称:spooldir-memory-hdfs.conf

# Name the components on this agent

spooldir-memory-hdfs.sources = spooldir-source

spooldir-memory-hdfs.sinks = hdfs-sink

spooldir-memory-hdfs.channels = memory-channel

# Describe/configure the source

##注意:不能往监控目中重复丢同名文件

## 通过spooldir来监控文件内容的变化

spooldir-memory-hdfs.sources.spooldir-source.type = spooldir

##监控日志文件所在的目录

spooldir-memory-hdfs.sources.spooldir-source.spoolDir =/usr/logtest

spooldir-memory-hdfs.sources.spooldir-source.fileHeader = true

spooldir-memory-hdfs.sources.spooldir-source.ignorePattern=^(.)*\\.out$

# Describe the sink

## 表示下沉到hdfs,下面配置的类型不同,type下面的参数就不同

spooldir-memory-hdfs.sinks.hdfs-sink.type = hdfs

#sinks.k1只能连接一个channel,source可以配置多个

spooldir-memory-hdfs.sinks.hdfs-sink.channel = memory-channel

#下面的配置告诉用hdfs去写文件的时候写到什么位置,下面的表示不是写死的,而是动态变化的。表示输出的目录名称是可变的

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.path =hdfs://192.168.32.129:9000/xcx/%y-%m-%d/%H%M/

#表示文件的前缀

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.filePrefix = xcx-

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.fileSuffix =.lzo     ###存储文件后缀,推荐lzo

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.codeC=lzo      ###压缩格式可选值gzip, bzip2, lzo, lzop, snappy

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.writeFormat=Text                                    ###书写格式

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.codeC=lzo  ###压缩格式

#表示到了需要触发的时间时,是否要更新文件夹,true:表示要更新

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.round = true

##表示每隔10分钟改变一下文件夹

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.roundValue = 10

##切换文件的时候单位是分钟

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.roundUnit = minute

##表示只要过了3秒钟,就切换生成一个新的文件

##spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.rollInterval = 3

##如果记录的文件大于200(字节)时切换一次

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.rollSize = 200

##当写了5个事件时触发,如果让此项失效,设置为0

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.rollCount = 5

##收到了多少条消息往hdfs中追加内容

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.batchSize = 1

#使用本地时间戳

spooldir-memory-hdfs.sinks.hdfs-sink.hdfs.useLocalTimeStamp = true

# Use a channel which buffers events in memory

##使用内存的方式

spooldir-memory-hdfs.channels.memory-channel.type = memory

spooldir-memory-hdfs.channels.memory-channel.capacity = 1000

spooldir-memory-hdfs.channels.memory-channel.transactionCapacity = 100

# Bind the source and sink to the channel

spooldir-memory-hdfs.sources.spooldir-source.channels = memory-channel

spooldir-memory-hdfs.sinks.hdfs-sink.channel = memory-channel

屏蔽无需flume监控的文件

在传输新文件到监控的文件夹时,需要让Spooing Directory Source忽略这个正在传输的文件,等传输完毕后在触发。可以使用ignorePattern属性来避免。

spooldir-memory-hdfs.sources.spooldir-source.ignorePattern=^(.)*\\.out$

临时方式启动:

bin/flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/spooldir-memory-hdfs.conf --name spooldir-memory-hdfs -Dflume.root.logger=INFO,console

后台方式启动:

nohup bin/flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/spooldir-memory-hdfs.conf --name spooldir-memory-hdfs &

改动文件后flume监控的目录下文件都会

扔了之后,现象是 

1、/usr/logtest/文件夹下的文件加了一个后缀.COMPLETED


flume如何监控多个动态变化的日志文件_第1张图片

你可能感兴趣的:(flume如何监控多个动态变化的日志文件)