Flume安装与应用,日志收集保存

时间:2021-09-30 19:48:54
flume解压缩 
tar -zxvf apache-flume-1.6.0-bin.tar.gz -C /opt/modules/
tar -zxvf apache-flume-1.6.0-src.tar.gz -C /opt/modules/
src里面文件内容,覆盖解压后bin文件里面的内容
cp -ri apache-flume-1.6.0-src/* apache-flume-1.6.0-bin/
重命名
mv apache-flume-1.6.0-bin/ flume
修改环境变量/etc/profile
export FLUME_HOME=/opt/modules/flume
export PATH=$PATH:$FLUME_HOME/bin
环境变量生效
source /etc/profile
验证Flume安装是否成功
flume-ng version
建立配置文件   源-Source,接收器-Sink,通道-Channel。
代理1监控source1/opt/tools/flumedir目录下文件,sink1上传到HDFS上flume目录,channel1配置了两个临时目录
/opt/modules/flume/conf
#gent1表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#Spooling Directory是监控指定文件夹中新文件的变化,
一旦新文件出现,就解析该文件内容,然后写入到channle。写入完成后,标记该文件已完成或者删除该文件。
#配置source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/opt/tools/flumedir
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false  #是否添加一个存储的绝对路径名的头文件。
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp
#配置sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://hadoop-master.dragon.org:9000/flume
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=4     #在滚动当前文件之前等待的秒数
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d  #名字的HDFS目录水槽创建的文件的前缀
#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/opt/tools/flumedir2  #存储检查点文件的目录
agent1.channels.channel1.dataDirs=/opt/tools/flumedir3 #用于存储日志文件的逗号分隔的目录列表。使用多个目录放在不同的磁盘可以提高文件通道性能


4.启动flume
flume-ng agent -n agent1 -c conf -f /opt/modules/flume/conf/example -Dflume.root.logger=DEBUG,console


往hdfs写的策略是当时间达到3600s或者文件大小达到128M。
agent1.sources = spooldirSource
agent1.channels = fileChannel
agent1.sinks = hdfsSink


agent1.sources.spooldirSource.type=spooldir
agent1.sources.spooldirSource.spoolDir=/opt/tools/flumedir
agent1.sources.spooldirSource.channels=fileChannel


agent1.sinks.hdfsSink.type=hdfs
agent1.sinks.hdfsSink.hdfs.path=hdfs://hadoop-master.dragon.org:9000/flume/%y-%m-%d
agent1.sinks.hdfsSink.hdfs.filePrefix=flume
agent1.sinks.sink1.hdfs.round = true
# Number of seconds to wait before rolling current file (0 = never roll based on time interval)
agent1.sinks.hdfsSink.hdfs.rollInterval = 3600
# File size to trigger roll, in bytes (0: never roll based on file size)
agent1.sinks.hdfsSink.hdfs.rollSize = 128000000  #文件大小,以触发卷,以字节为单位
agent1.sinks.hdfsSink.hdfs.rollCount = 0   #写入文件之前的事件数
agent1.sinks.hdfsSink.hdfs.batchSize = 1000  #写入文件之前被刷新到HDFS的事件数


#Rounded down to the highest multiple of this (in the unit configured using hdfs.roundUnit), less than current time.
agent1.sinks.hdfsSink.hdfs.roundValue = 1   #圆下来的最高倍数
agent1.sinks.hdfsSink.hdfs.roundUnit = minute   #该单位的全面下降值-“秒”,“分钟”或“小时”
agent1.sinks.hdfsSink.hdfs.useLocalTimeStamp = true  #使用本地时间(而不是时间戳的事件标题)而更换的转义序列
agent1.sinks.hdfsSink.channel=fileChannel
agent1.sinks.hdfsSink.hdfs.fileType = DataStream




agent1.channels.fileChannel.type = file
agent1.channels.fileChannel.checkpointDir=/opt/tools/flumedir2
agent1.channels.fileChannel.dataDirs=/opt/tools/flumedir3


flume-ng agent -n agent1 -c conf -f /opt/modules/flume/conf/exa2 -Dflume.root.logger=DEBUG,console
flume-ng agent --conf ./conf/ -f conf/flume-site.xml -Dflume.root.logger=DEBUG,console -n agent1>log.log 2>&1 &
让日志收集任务以后台进程运行,且将运行日志重定向到./log.log保存。2>&1就是用来将标准错误2重定向到标准输出1中的最后一个&,则是让bash在后台执行
$ flume-ng agent -c /etc/flume-ng/conf -f /etc/flume-ng/conf/f1.conf -Dflume.root.logger=DEBUG,console -n agent-1
-n 指定agent名称
-c 指定配置文件目录
-f 指定配置文件
-Dflume.root.logger=DEBUG,console 设置日志等级
>/dev/null 2>&1
将输出重定向到它的好处是不会因为输出的内容过多而导致文件大小不断的增加,将命令的输出扔弃掉了。
丢弃你的标准输出和错误输出,当你不希望某一命令或程序产生任何输出的时候,就可以这样做