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

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

作者: 机灵鬼鬼 | 来源:发表于2019-03-12 15:09 被阅读0次


    同时监控多个文件并下沉到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如何监控多个动态变化的日志文件

          本文链接:https://www.haomeiwen.com/subject/bkhxyqtx.html