Flume开源的海量日志收集系统使用指南

BigInsights 将实时日志收集体统 Flume 整合为产品的一部分,支持对 flume 极其相关组件 hadoop、zookeeper 的组合安装,用可视化界面为用户部署实时日志收集系统;另外 BigInsights flume 通过 flume runtime toolkit 支持快速的添加日志收集节点,无需配置,轻松实现日志收集系统的可扩展性。

Flume 是开源的海量日志收集系统,支持对日志的实时性收集。初始的 flume 版本是 flume OG(Flume original generation) 由 ">Cloudera 公司开发,叫做 Cloudera Flume;后来,cloudera 把 flume 贡献给 Apache,版本改为 FLUME NG(Flume next generation)现在称为 Apache Flume。最初始的 BigInsights 使用 flume 0.9.1,随后 BigInsights 将 Flume 升级到 0.9.4。这两个版本都属于 flume OG,基于开源的 Cloudera Flume。 本人认为,在 BigInsights 以后发布的版本中,flume 升级到 flume NG 是必然趋势。

BigInsights 包含了两个和 flume 密切相关的组件:hadoop 和 zookeeper。Flume 和 hadoop 的链接是其可以将收集的日志存于 hdfs,从而可以使用 hadoop 高效的处理日志数据,从日志中提取有用信息;而和 zookeeper 的关系是,flume 内部收集日志的各类节点可以通过 zookeeper(高效可靠的协同工作系统)进行管理,flume 各个节点的配置信息存放在 zookeeper 的 data 文件中。从整体上来讲,flume 和 zookeeper 是 hadoop 周边组件,都是和 hadoop 密切相关的;hadoop 也可以使用 zookeeper 管理内部各类节点。以 hadoop 为核心的大数据处理系统 BigInsights,将 zookeeper 和 flume 整合在系统中,为用户提供了可视化洁面,方便对多个组件的在多个节点上的整合安装;也就是说,使用 BigInsights 的可视化界面,用户可以轻松的在多个节点上部署 hadoop+flume+zookeeper,实现日志系统的布置。

另外,BigInsights 内部的 flume 通过 Flume Runtime Toolkit,为用户提供了无需配置的 flume 安装包,实现对当前 flume 集群的快速扩展。

Flume 基础知识

Flume 对日志数据的收集通过三种节点:master,agent,collector 之间的协作完成(表 1)。其中 agent、collector 都属于日志收集节点。数据的传输需要指定数据源(source)和数据汇集点(sink)(表 2)。Flume 中还有个重要的概念叫数据流(data flow)。数据流就是数据传输的管道,描述了日志数据从产生处到最终目的地的数据传送过程。flume 中通过对日志收集节点的 source,sink 配置,实现数据流的建立。

表 1. Flume 基本概念 1

节点名 节点职责 master node(主节点) 管理另外两种节点,是 flume 集群的控制器。 agent node(代理节点) 收集 log 的节点,其可以将收集到的 log 直接发给数据仓库,也可以将数据发给收集节点(collector node)。 collector node(收集节点) 对多个代理节点发过来的数据进行整合,
然后发给数据仓库。这个节点的产生是减少日志收集节点和数据仓库之间的连接。

其中,agent node 和 collector node 由数据源(source)和数据汇集点(sink)两部分组成。本人认为,collector node 和代理节点 agent node 是同一种 flume 节点类型,那就是负责收集日志数据的节点,只是日志的数据源(source)和数据汇集点(sink)地不同。

表 2. Flume 基本概念 2

角色 描述 sink 数据源,log 产生的位置。 source 数据汇集点,log 要被传送到的位置。

在某种情况下,一个 node 的 sink 有可能是另外一个 node 的 source。如表 3,在同一个机器上(机器名:hostname)启动两个日志收集节点:agent1,agent2。Agent1 从 log.text 文件中收集日志,将收集到的日志发送到端口 35853;另外一个日志收集节点 agent2 则从端口 35863 监听数据,并将监听到的数据存放在 hdfs 中。在此例中,agent1 的 sink 即是 agent2 的 source。

表 3. 节点配置实例

Node Source Sink Agent1 tail("/home/flume/log.text", false) agentSink( hostname, 35863) Agent2 collectorSource(35863) collectorSink( "hdfs://biginsight.ibm.com:
9000/flume", "agent-testing")

Flume 配置

Flume 的配置文件为 $FLUME_HOME/conf/flume-conf.xml,如果用户没有配置此文件,flume 将使用默认配置文件 flume-conf.xml.template。属性的描述以一下形式描述(以属性 flume.master.zk.servers 为例):

<property> <name>flume.master.zk.servers</name> <value>hostname:2181</value> <description>Zookeeper server<description> </property>

配置文件针对每个属性给出属性名(name)、属性值(value)与属性描述(description),其中属性描述不是必需的,可以省略。部署 Flume 过程中,与用户密切相关的属性(property)有如下几个(表 4):

表 4. 配置信息

属性(Property) 描述 flume.master.servers 主节点机器名(master node) flume.master.store 各节点配置信息的存放方式。有两种:'zookeeper' 或 'memory'。一般使用 zookeeper 存放 flume 节点配置信息。因为 zookeeper 是可靠的,具有容错能力并且可以通过重启修复配置信息,这样可
防止配置信息的丢失。当然,如果用户可以忍受在机器出现故障时配置信息出现丢失,可以用 memory 的方式。 flume.master.serverid 主节点的唯一辨识号。Flume 集群中可以有多个 master,每个 master 以唯一的 serverid 用来标识。取值可以为 0、1、2 …… flume.master.zk.use.external 布尔值,是否使用外部的 zookeeper 集群来管理节点配置信息。如果是,则需要部署 zookeeper 集群,并通过属性“flume.master.zk.servers”指定 zookeeper 集群。 flume.master.zk.servers Zookeeper 集群。属性值(value)使用以下格式:zookeeperHostname:zookeeperPort。当有多和 zookeeper 节点时,属性值以“,”分割。如:hostname1:2181,hostname:2181。

除此之外,存放 flume 的 log 的目录可以在 log4j.properties 文件中通过属性 flume.log.dir 指定,如:flume.log.dir=/tmp/flume/logs。Flume 有两个 log 文件:flumemaster.out 和 flumenode.out。顾名思义,flumemaster.out 存放主节点(master)的 log 信息,flumenode.out 存放日志收集节点的信息(agent 和 collector)。当 flume 节点启动后,会有相应的进程文件存放 pid,存放路径可以在 flume-env.sh 中设定,如:export FLUME_PID_DIR=“/tmp/flume/pids”。

时间: 2025-01-01 17:54:56

Flume开源的海量日志收集系统使用指南的相关文章

IBM BigInsights Flume 轻松部署可扩展的实时日志收集系统

IBM BigInsights Flume 简介 Flume 是开源的海量日志收集系统,支持对日志的实时性收集.初始的 flume 版本是 flume OG(Flume original generation) 由 Cloudera 公司开发,叫做 Cloudera Flume:后来,cloudera 把 flume 贡献给 Apache,版本改为 FLUME NG(Flume next generation)现在称为 Apache Flume.最初始的 BigInsights 使用 flume

基于Flume的美团日志收集系统

基于Flume的美团日志收集系统(一)架构和设计 问题导读: 1. Flume-NG与Scribe对比,Flume-NG的优势在什么地方? 2.架构设计考虑需要考虑什么问题? 3.Agent死机该如何解决? 4.Collector死机是否会有影响? 5.Flume-NG可靠性(reliability)方面做了哪些措施? 美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流.美团的日志收集系统基于Flume设计和搭建而成. <基于Flu

分布式日志收集系统Apache Flume的设计介绍

概述 Flume是Cloudera公司的一款高性能.高可能的分布式日志收集系统.现在已经是Apache Top项目.Github地址.同Flume相似的日志收集系统还有Facebook Scribe,Apache Chuwka,Apache Kafka(也是LinkedIn的).Flume是后起之秀,本文尝试简要分析Flume数据流通过程中提供的组件.可靠性保证来介绍Flume的主要设计,不涉及Flume具体的安装使用,也不涉及代码层面的剖析.写博文来记录这个工具主要是觉得与最近开发的一个流式的

各位大神请教下flume和logstash在日志收集方面的性能哪一个更好一些呢?

问题描述 各位大神请教下flume和logstash在日志收集方面的性能哪一个更好一些呢? 最近要做一个日志收集,把日志放到kafaka上不知道到这俩哪个收集日志的性能更好一些

Android平台日志收集系统

Android平台日志收集系统       在产品开发测试中以及产品投放到终端客户后,我们经常会遇到各种各样的问题,产品出异常,比较严重的就是使用过程中死机,用户无法操作.对于这种情况,将问题反馈给研发,问题能够快速重现的研发还比较好解决,有些问题不常见,研发短时间内也很难找到问题根源.为了提高研发的效率,那么每次出异常的时候我们都最好有系统的打印系统,通过系统打印异常的蛛丝马迹去查找问题的元凶.但是有时出问题的时候,系统都已经死机或者无法操作了,也就不能通过操作去抓系统打印了,因此引入日志收集

数据存储-Kafka到底是消息队列还是日志收集系统?

问题描述 Kafka到底是消息队列还是日志收集系统? 消息队列中的永久存储是HDFS吗?消费者是拿到Broker临时数据存储系统中的数据存储到HDFS里面吗? 以上是我自己看资料的理解,最近在写论文,携程的消息中间件中使用到了Kafka,所以自己在理解的时候有些疑惑,引文又看到直接说Kafka是一个消息队列,有的说是日志收集系统的. 解决方案 是消息队列,当然可以完成日志收集的功能 解决方案二: kafka主要是消息队列,你的消费者可以自己再实现,决定把数据保存下来还是说转发给其他处理,比如St

使用scribe日志收集系统,scribe最终产出的日志里面中文是乱码。

问题描述 使用scribe日志收集系统,scribe最终产出的日志里面中文是乱码. 我在向scribe里面发送日志之前,是用UTF-8编码的, 经过scribe远程传输到scribe中心机,产生的文件里,中文是乱码,我用vim查看了:set fileencoding,它报告说是latin1编码. 我该怎么搞我才能用UTF-8来查看scribe日志,查看到正常的中文呢?谢谢. 注意,拒绝寥寥几句的敷衍式的回答,和复制粘贴.欢迎探讨式的回答.

Flume日志收集分层架构应用实践

Flume作为一个日志收集工具,非常轻量级,基于一个个Flume Agent,能够构建一个很复杂很强大的日志收集系统,它的灵活性和优势,主要体现在如下几点: 模块化设计:在其Flume Agent内部可以定义三种组件:Source.Channel.Sink 组合式设计:可以在Flume Agent中根据业务需要组合Source.Channel.Sink三种组件,构建相对复杂的日志流管道 插件式设计:可以通过配置文件来编排收集日志管道的流程,减少对Flume代码的侵入性 可扩展性:我们可以根据自己

WOT2016黄慧攀:海量日志处理可以不用Hadoop或Spark

如今,随着云计算.移动互联网.物联网.大数据等技术的快速发展,企业逐渐认识到,数据的价值,对数据的挖掘分析能力已经成为企业的核心竞争力.对于互联网企业,最有价值的数据都蕴藏在网站的日志中.从日志中,我们可以知道网站的访问量,应用的使用量.用户的相关数据,使用偏好等关键信息,从而更好的改善服务质量,更好的满足用户的需求. 但是随着企业的用户规模不断扩大,以及数据量的爆炸式增长,日志的管理和分析变得越来越具有挑战性.近日,51CTO记者采访了[WOT2016互联网运维与开发者峰会]特邀讲师,又拍云C