文档章节

日志采集flume配置备忘

超爱fitnesse
 超爱fitnesse
发布于 2015/06/29 21:03
字数 550
阅读 390
收藏 0

运行在日志源结点的flume agent:

  • source: Spooling Directory Source
  • channel: Memory Channel
  • sink: Avro Sink
agent.sources.spooldirSrc.type = spooldir
agent.sources.spooldirSrc.spoolDir = /var/spool/flume/<app>
agent.sources.spooldirSrc.fileHeader = true
agent.sources.spooldirSrc.deletePolicy = immediate
agent.sources.spooldirSrc.interceptors = i1 i2 i3 i4 i5
agent.sources.spooldirSrc.interceptors.i1.type = timestamp
agent.sources.spooldirSrc.interceptors.i2.type = host
agent.sources.spooldirSrc.interceptors.i2.hostHeader = hostname
agent.sources.spooldirSrc.interceptors.i3.type = static
agent.sources.spooldirSrc.interceptors.i3.key = node
agent.sources.spooldirSrc.interceptors.i3.value = <hostname>
agent.sources.spooldirSrc.interceptors.i4.type = static
agent.sources.spooldirSrc.interceptors.i4.key = application
agent.sources.spooldirSrc.interceptors.i4.value = <app>
agent.sources.spooldirSrc.interceptors.i5.type = static
agent.sources.spooldirSrc.interceptors.i5.key = from
agent.sources.spooldirSrc.interceptors.i5.value = <hostname>_<app>

说明:

  • interceptors.i2.hostHeader = hostname 只能显示ip,所以特地加了 static key: node = <hostname>
  • static key: from = <hostname>_<app> 用于后级日志汇总结点的日志数据分离,必不可少。
  • spooldirSrc.deletePolicy = immediate 必须要设置,否则spoolDir目录下在超过10万个.COMPLETE文件后,flume进程占用CPU超过100%,且1秒钟只能处理1个文件,最新数据是:21万个文件, CPU 122%,8秒处理1个文件。

我把spoolDir(/var/spool/flume/<app>)称为日志片段文件池,本质上是一个buffer,flume对先放入此目录的文件先发送给collector,并且文件放入后,不能再修改,flume一旦发现有修改,马上停止发送文件。针对此flume固有的限制,需要补充两个手段:

  1. 生成日志片段的临时目录应与spoolDir在同一分区,然后使用mv移动到spoolDir。
  2. 需要监控spoolDir下日志片段文件个数,正常情况下,应该只有1-2个文件,一点发现持续增长,说明flume已经停止工作(flume停止工作时,进程还在,但是flume日志的最后一行明确说明:发现日志片段文件变化,所以停止工作)。

运行在日志汇总结点的flume collector:

  • source: Avro Sink
  • channel: Memory Channel
  • sink: File Roll Sink
agent.sources.avroSrc.selector.type = multiplexing
agent.sources.avroSrc.selector.header = from
agent.sources.avroSrc.selector.default = memoryChannel
agent.sources.avroSrc.selector.optional.<hostname>_<app> = ch_roll_<hostname>_<app> ch_daily_<hostname>_<app>

agent.sinks.k_roll_<hostname>_<app>.type = file_roll
agent.sinks.k_roll_<hostname>_<app>.sink.directory = /var/spool/flume/roll/<app>/<hostname>
agent.sinks.k_roll_<hostname>_<app>.sink.serializer = text
agent.sinks.k_roll_<hostname>_<app>.sink.rollInterval = 10
agent.sinks.k_roll_<hostname>_<app>.channel = ch_roll_<hostname>_<app>
agent.channels.ch_roll_<hostname>_<app>.type = memory
agent.channels.ch_roll_<hostname>_<app>.capacity = 100000

agent.sinks.k_daily_<hostname>_<app>.type = file_roll
agent.sinks.k_daily_<hostname>_<app>.sink.directory = /var/spool/flume/daily/<app>/<hostname>
agent.sinks.k_daily_<hostname>_<app>.sink.serializer = text
agent.sinks.k_daily_<hostname>_<app>.sink.rollInterval = 86400
agent.sinks.k_daily_<hostname>_<app>.channel = ch_daily_<hostname>_<app>
agent.channels.ch_daily_<hostname>_<app>.type = memory
agent.channels.ch_daily_<hostname>_<app>.capacity = 100000

说明:

  • k_roll_<hostname>_<app> 用于发送日志到日志集合工具Graylog
  • k_daily_<hostname>_<app> 用于每日日志备份

© 著作权归作者所有

共有 人打赏支持
超爱fitnesse
粉丝 28
博文 33
码字总数 44160
作品 0
浦东
QA/测试工程师
私信 提问
大数据教程(12.5)日志采集框架Flume

前面的章节介绍了hive的知识,本节博主将分享日志采集框架Flume的相关知识。在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、...

em_aaron
02/12
0
0
Cloudera Flume简介

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

Javafans
2012/03/12
0
0
带你看懂大数据采集引擎之Flume&采集目录中的日志

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 一、Flume的介绍: Flume由C...

李金泽
2018/03/04
0
0
02. Spark Streaming实时流处理学习——分布式日志收集框架Flume

2. 分布式日志收集框架Flume 2.1 业务现状分析 如上图,大量的系统和各种服务的日志数据持续生成。用户有了很好的商业创意想要充分利用这些系统日志信息。比如用户行为分析,轨迹跟踪等等。 ...

牦牛sheriff
2018/09/02
0
0
解决Flume采集数据时在HDFS上产生大量小文件的问题

问题:flume指定HDFS类型的Sink时,采集数据至HDFS指定目录,会产生大量小文件。 问题重现: 1、创建flume配置文件flume-env.sh,: flume配置文件如下(根据自身需要修改): 因为flume可以...

舒运
2018/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java网络编程

基本概念 网络IO会涉及到同步,异步,阻塞,非阻塞等几个概念。 一个网络IO读取过程是数据从 网卡 到 内核缓冲区 到 用户内存 的过程。同步和异步区别在于数据从内核到用户内存的过程是否需要...

春哥大魔王的博客
26分钟前
1
0
Spring "reg:zookeeper" 的前缀 "reg" 未绑定等类似问题解决方案。

今天同事遇到一个Spring启动加载配置文件时,不识别reg:zookeeper标签的问题。 我查看配置,发现是Spring配置文件的头部没有引入reg标签的命名空间,具体如下图: 所以,以后遇到类似的标签未...

花漾年华
55分钟前
1
0
阿里云领衔云市场

近期,2018年Q4及全年的全球云基础设施服务市场数据新鲜出炉,发布方是美国市场研究机构Synergy Research Group。这个机构是专做电信网络市场情报的公司,成立于1999年,每年都会公布各大公有...

linuxCool
今天
2
0
C++友元函数和友元类(C++ friend)详解

私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书...

shzwork
今天
3
0
JAVA对map进行分组

public static Map<String, List<Map<String, Object>>> transition(List<Map<String, Object>> list){ Map<String, List<Map<String, Object>>> map = new HashMap<>(); //......

火龙战士
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部