`
善良的java
  • 浏览: 16343 次
社区版块
存档分类
最新评论

Flume采集处理日志文件

 
阅读更多
1.source
flume提供多种source供用户进行选择,尽可能多的满足大部分日志采集的需求,常用的source的类型包括avro、exec、netcat、spooling-directory和syslog等。具体的使用范围和配置方法详见source.

2.channel
flume中的channel不如source和sink那么重要,但却是不可忽视的组成部分。常用的channel为memory-channel,同时也有其他类型的channel,如JDBC、file-channel、custom-channel等,详情见channel.

3.sink
flume的sink也有很多种,常用的包括avro、logger、HDFS、hbase以及file-roll等,除此之外还有其他类型的sink,如thrift、IRC、custom等。具体的使用范围和使用方法详见sink.

Flume处理日志
Flume不止可以采集日志,还可以对日志进行简单的处理,在source处可以通过interceptor对日志正文处的重要内容进行过滤提取,在channel处可以通过header进行分类,将不同类型的日志投入不同的通道中,在sink处可以通过正则序列化来将正文内容进行进一步的过滤和分类。

Flume Source Interceptors

Flume可以通过interceptor将重要信息提取出来并且加入到header中,常用的interceptor有时间戳、主机名和UUID等,用户也可以根据个人需求编写正则过滤器,将某些特定格式的日志内容过滤出来,以满足特殊需求。

Flume Channel Selectors
Flume可以根据需求将不同的日志传输进不同的channel,具体方式有两种:复制和多路传输。复制就是不对日志进行分组,而是将所有日志都传输到每个通道中,对所有通道不做区别对待;多路传输就是根据指定的header将日志进行分类,根据分类规则将不同的日志投入到不同的channel中,从而将日志进行人为的初步分类。

Flume Sink Processors
Flume在sink处也可以对日志进行处理,常见的sink处理器包括custom、failover、load balancing和default等,和interceptor一样,用户也可以根据特殊需求使用正则过滤处理器,将日志内容过滤出来,但和interceptor不同的是在sink处使用正则序列化过滤出的内容不会加入到header中,从而不会使日志的header显得过于臃肿。



附录
常见的source
avro source
avro可以监听和收集指定端口的日志,使用avro的source需要说明被监听的主机ip和端口号,下面给出一个具体的例子:

a1.sources = r1

a1.channels = c1

a1.sources.r1.type = avro

a1.sources.r1.channels = c1

a1.sources.r1.bind = 0.0.0.0

a1.sources.r1.port = 4141


exec source
exec可以通过指定的操作对日志进行读取,使用exec时需要指定shell命令,对日志进行读取,下面给出一个具体的例子:

a1.sources = r1

a1.channels = c1

a1.sources.r1.type = exec

a1.sources.r1.command = tail -F /var/log/secure

a1.sources.r1.channels = c1


spooling-directory source
spo_dir可以读取文件夹里的日志,使用时指定一个文件夹,可以读取该文件夹中的所有文件,需要注意的是该文件夹中的文件在读取过程中不能修改,同时文件名也不能修改。下面给出一个具体的例子:

agent-1.channels = ch-1

agent-1.sources = src-1

 

agent-1.sources.src-1.type = spooldir

agent-1.sources.src-1.channels = ch-1

agent-1.sources.src-1.spoolDir = /var/log/apache/flumeSpool

agent-1.sources.src-1.fileHeader = true


syslog source
syslog可以通过syslog协议读取系统日志,分为tcp和udp两种,使用时需指定ip和端口,下面给出一个udp的例子:

a1.sources = r1

a1.channels = c1

a1.sources.r1.type = syslogudp

a1.sources.r1.port = 5140

a1.sources.r1.host = localhost

a1.sources.r1.channels = c1


常见的channel
Flume的channel种类并不多,最常用的是memory channel,下面给出例子:

a1.channels = c1

a1.channels.c1.type = memory

a1.channels.c1.capacity = 10000

a1.channels.c1.transactionCapacity = 10000

a1.channels.c1.byteCapacityBufferPercentage = 20

a1.channels.c1.byteCapacity = 800000


常见的sink
logger sink

logger顾名思义,就是将收集到的日志写到flume的log中,是个十分简单但非常实用的sink

avro sink
avro可以将接受到的日志发送到指定端口,供级联agent的下一跳收集和接受日志,使用时需要指定目的ip和端口:例子如下:
a1.channels = c1

a1.sinks = k1

a1.sinks.k1.type = avro

a1.sinks.k1.channel = c1

a1.sinks.k1.hostname = 10.10.10.10

a1.sinks.k1.port = 4545


file roll sink
file_roll可以将一定时间内收集到的日志写到一个指定的文件中,具体过程为用户指定一个文件夹和一个周期,然后启动agent,这时该文件夹会产生一个文件将该周期内收集到的日志全部写进该文件内,直到下一个周期再次产生一个新文件继续写入,以此类推,周而复始。下面给出一个具体的例子:

a1.channels = c1

a1.sinks = k1

a1.sinks.k1.type = file_roll

a1.sinks.k1.channel = c1

a1.sinks.k1.sink.directory = /var/log/flume


hdfs sink
hdfs与file roll有些类似,都是将收集到的日志写入到新创建的文件中保存起来,但区别是file roll的文件存储路径为系统的本地路径,而hdfs的存储路径为分布式的文件系统hdfs的路径,同时hdfs创建新文件的周期可以是时间,也可以是文件的大小,还可以是采集日志的条数。具体实例如下:

a1.channels = c1

a1.sinks = k1

a1.sinks.k1.type = hdfs

a1.sinks.k1.channel = c1

a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S

a1.sinks.k1.hdfs.filePrefix = events-

a1.sinks.k1.hdfs.round = true

a1.sinks.k1.hdfs.roundValue = 10

a1.sinks.k1.hdfs.roundUnit = minute


hbase sink

hbase是一种数据库,可以储存日志,使用时需要指定存储日志的表名和列族名,然后agent就可以将收集到的日志逐条插入到数据库中。例子如下:

a1.channels = c1

a1.sinks = k1

a1.sinks.k1.type = hbase

a1.sinks.k1.table = foo_table

a1.sinks.k1.columnFamily = bar_cf

a1.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer

a1.sinks.k1.channel = c1
分享到:
评论

相关推荐

    Flume采集Nginx日志到Hive.rar

    Flume采集Nginx日志到Hive的事务表时需要导入到Flume下的Jar文件,具体使用方式可参见博文:https://blog.csdn.net/l1028386804/article/details/97975539

    flume采集日志存入MySQL,支持分库分表,动态加载配置文件-flume-mysql.zip

    flume采集日志存入MySQL,支持分库分表,动态加载配置文件-flume-mysql

    kafka+flume 实时采集oracle数据到hive中.docx

    讲述如何采用最简单的kafka+flume的方式,实时的去读取oracle中的重做日志+归档日志的信息,从而达到日志文件数据实时写入到hdfs中,然后将hdfs中的数据结构化到hive中。

    大数据实时日志采集框架Flume实战(视频+课件+代码+工具+讲义)

    Flume中配置HDFS文件生成大小及时间分区 Flume中配置Spooling Dir的使用 Flume中配置Spooling Dir的文件过滤 Flume中配置扇入架构的介绍 Flume中配置扇入架构的测试实现 Flume中配置扇出架构的实现 Flume中...

    flime安装+配置+测试+案例(采集日志至HDFS)

    flime安装+配置+测试+案例(采集日志至HDFS)+理论+搭建错误解决,超详细flum搭建,一篇带你入门flume,通俗易懂,详细步骤注解!!!

    rocketmq-flume-master:flume收集日志发送到rocketmq

    rocketmq-flume Source&Sink 该项目用于与之间的消息接收和投递。 首先请确定您已经对和有了基本的了解 确保本地maven库中已经存在,或者下载RocketMQ源码自行编译 在rocketmq-flume项目根目录执行mvn clean install...

    数据采集之Flume.xmind

    提示 学习Flume必须明白这几个概念,Event英文直译是事件,但是在Flume里表示数据传输的一个最小单位(被Flume收集的一条条日志又或者一个个的二进制文件,不管你在外面叫什么,进入Flume之后它就叫event)。...

    最全Flume视频教程,大数据入门必学

    Flume是的一个分布式、高可用、高可靠的海量日志采集、聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据,同时提供了对数据进行简单处理并写到各种数据接收方的能力。 2、适应人群 有一定的...

    Flume 构建高可用、可扩展的海量日志采集系统_PDF电子书下载 带索引书签目录_(美)史瑞德哈伦著_电子工业出版社_P208_2015.08.pdf

    高清扫描pdf文件,带目录,书签 ...第2章 用Apache Flume 处理流数据 第3章 源(Source) 第4章 Channel 第5章 Sink 第6章 拦截器、Channel 选择器、Sink 组和 第7章 发送数据到Flume* . 第8章 规划、部署和监控Flume .

    Apache Hadoop---Flume.docx

    Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

    Flume总结 全.pdf

    对于Flume学习上的总结,包含: 1.Linux环境Flume安装配置及使用。 2.Apache Flume 入门教程。 3.flume的部署和avro source测试;netcast source测试。...5.Flume监听本地Linux-hive日志文件采集到HDFS。

    全面系统完整的Flume教程

    在本课程中,你将学习到,Flume架构原理、安装配置、拓扑结构、使用Flume搭建监控端口采集数据、监控本地(或HDFS)文件(或文件夹)采集数据、多数据源采集数据、多数据出口收集日志、Flume负载均衡以及对于Flume的监控...

    通俗易懂的Flume升级版教程(含配套资料)

    在本课程中,你将学习到,Flume架构原理、安装配置、拓扑结构、使用Flume搭建监控端口采集数据、监控本地(或HDFS)文件(或文件夹)采集数据、多数据源采集数据、多数据出口收集日志、Flume负载均衡以及对于Flume的监控...

    xlog:基于linux c开发的多进程、低系统消耗的日志收集客户端、可结合flume、kafka同时对多个日志源进行日志的实时收集

    xlog功能实时收集指定日志文件内容,发送到sources类型为netcat的flume端(理论上支持所有以socket形式监听的日志收集服务端)可以满足单个日志文件的实时收集,可以配置nginx每个项目一个日志文件,每个日志文件一个...

    大数据视频_Flume视频教程

    在本课程中,你将学习到,Flume架构原理、安装配置、拓扑结构、使用Flume搭建监控端口采集数据、监控本地(或HDFS)文件(或文件夹)采集数据、多数据源采集数据、多数据出口收集日志、Flume负载均衡以及对于Flume的监控...

    数据采集在大数据中的应用.doc

    绝大部分的互联网企业都拥有自己专属的海量数据采集 工具,一般是用于对系统日志进行采集,例如Hadoop的Chukwa、Fecebook专用的Scribe 以及Cloudera的Flume等等,这些工具都是采取分布式类型的架构,可以满足很大的...

    大数据中台架构栈.doc

    配置简单,偏重数据前期处理,分析方便 从两者的设计思想来看,Flume 最初并不是为了采集日志而设计,而是定位在把数据传入 HDFS 中,这和 Logstash 有根本的区别。所以它理所应当侧重于数据的传输和平安,且需要更...

    大数据简历,内含有数据项目的简历,大数据 简历

    1.运用Flume采集源数据,存放于Kafka消息队列中 2.采用Kstream框架对数据进行初步数据清洗与变换,使用Java API将数据导入HBase 3.使用Hive集成Hbase,对数据进行ETL,进一步清洗处理数据 4.协助使用Hive提取特征值...

    基于Java和Vue的用户行为分析画像系统设计源码

    项目采用Nginx+Flume+kafka实现日志收集,Flink进行实时流处理,ClickHouse作为实时数仓,HDFS作为数据备份。适合用于学习和实践Java、Vue、JavaScript、HTML、Shell和Scala技术,以及开发基于Java和Vue的用户行为...

    大数据基础知识.docx

    文件采集:包括实时文件采集和处理技术flume、基于ELK的日志采集和增量采集等等。 二、大数据预处理 大数据预处理,指的是在进行数据分析之前,先对采集到的原始数据所进行的诸如"清洗、填补、平滑、合并、

Global site tag (gtag.js) - Google Analytics