一、什么是Flume
Apache Flume 是一个分布式、高可靠、高可用的用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具。Flume 可以做离线也可以做实时分析。

二、Flume架构

如图所示:

Agent就是Flume的一个部署实例,一个完整的Agent中包含了三个组件Source(数据的来源与方式)、Channel(数据的缓存池或者管道)、Sink(定义了数据输出的方式与目的地)。一个source,可以绑定多个channel。
一个sink,只能绑定一个channel。Events是Flume数据传输的基本单元。

Flume 的 Source 负责消费外部传递给它的数据(比如 web 服务器的日志)。外部的数据生产方以 Flume Source 识别的格式向 Flume 发送 Event。

Flume 可以设置多级 Agent 连接的方式传输 Event 数据。也支持扇入和扇出的部署方式,类似于负载均衡方式或多点同时备份的方式。

Flume 可以根据自己的业务需求来任意组合传输日志的 Agent 实例,上面这张图就是一个扇入方式的 Flume 部署方式,前三个 Agent 的数据都汇总到一个 Agent4 上,最后由 Agent4 统一存储到 HDFS。

Source 的种类非常多,可以适应各种日志数据源需求。

三、Flume+SpringBoot日志收集实现

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.citydo</groupId><artifactId>flumespringboot</artifactId><version>0.0.1-SNAPSHOT</version><name>flumespringboot</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!-- 过滤logback日志框架 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!-- 引入log4j2 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><!-- flume --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-flume-ng</artifactId><version>2.8.2</version></dependency><dependency><groupId>org.apache.flume.flume-ng-clients</groupId><artifactId>flume-ng-log4jappender</artifactId><version>1.7.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

springbot 配置

logging.config=classpath:logback.xml

logback.xml

<configuration status="WARN" monitorInterval="30"><!--先定义所有的appender--><appenders><!--这个输出控制台的配置--><console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{16}]  %msg%n"/></console><!--输出到flume--><!--  <Flume name="Flume" compress="false" type="avro" ignoreExceptions="false"><Agent host="127.0.0.1" port="44444"/><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{16}]  %msg%n"/></Flume>--></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息--><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="INFO"></logger><root level="all"><appender-ref ref="Console"/><appender-ref ref="Flume"/></root></loggers>
</configuration>
package com.citydo.flumespringboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class FlumespringbootApplication {public static void main(String[] args) {SpringApplication.run(FlumespringbootApplication.class, args);}}

参考:阿里云

Flume采集数据利器相关推荐

  1. flume采集数据易出现的bug

    1.内存不足 修改文件内容    <文件根目录>/bin/flume-ng JAVA_OPTS="-Xms100m -Xmx4096m -Dcom.sun.management. ...

  2. 【大数据入门核心技术-Flume】(四)使用Flume采集数据到Hive

    [大数据入门核心技术-Kafka](七)Ka 录 一.准备工作 1.Hadoop环境安装 2.Flume安装部署 二.采集数据到HDFS 1.配置任务文件 2.启动传输 3.查看是否同步成功 三.常见 ...

  3. flume采集数据到hdfs

    说明:flume1.5,hadoop2.2 1.配置JAVA_HOME和HADOOP_HOME 说明:HADOOP_HOME用于获取flume操作hdfs所需的jar和配置文件,如果不配置,也可以手动 ...

  4. Flume采集日志数据

    一.为什么选用Flume? Flume vs Logstash vs Filebeat 当时选择数据采集工具时,我们主要参考了市面上热度比较高的Flume和Logstash还有Filebeat,据目前 ...

  5. flume+kafka整合采集数据案例

    一.flume简介 1.1.1 概述 Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统. Flume可以采集文件,socket数据包.文件.文件夹.kafka等各种形式源数据,又 ...

  6. Flume安装部署,采集方案配置文件编写案例,启动agent采集数据

    1.2 Flume实战案例 1.2.1 Flume的安装部署 1.Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境 上传安装包到数据源所在节点上 然后解压 tar -zxvf ...

  7. C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

    [转]C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子) 第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流 ...

  8. 【Linux】logrotate切割Tomcat日志并轮转(Flume采集准备工作适用)

    [Linux]logrotate切割Tomcat日志并轮转(Flume采集准备工作适用) 背景及使用场景 系统及软件环境 解决方案及具体操作 logrotate配置文件编辑 logrotate全部配置 ...

  9. 互联网采集数据有哪几种常见的方法?

    首先,数据获取分两大类,数据交换购买以及数据采集. 数据采集主要又分两大类: 自产(SDK采集.埋点) API采集 SDK采集,核心是提供服务,在基于服务顺带采集部分数据.例如MobTech的Shar ...

最新文章

  1. 微服务、DevOps…不是效率银弹,请同时升级你的管理方式
  2. c语言 feof_C语言 实现简单功能的12306火车售票系统【附源码】
  3. 语音用户界面基本设计原则
  4. C#中的平台调用(P/Invoke)
  5. LeetCode:棒球比赛【682】
  6. CF528D. Fuzzy Search [FFT]
  7. linux配置c11,C11标准的泛型机制
  8. 一篇超频菜鸟必看的基础知识大全!
  9. 抑郁症治疗过程中有哪些变化?
  10. java毕业设计-java SSM超市积分兑换系统
  11. oracle中删除级联方法,Oracle 外键级联删除
  12. iOS14 YYAnimatedImageView图片不显示,多数用在YYLabel的富文本中添加的图片
  13. 推箱子游戏的90个经典关卡
  14. SpringBoot+Beetlsql代码生成
  15. linux传奇私服文件包,传奇私服服务器端文件结构
  16. 安卓苹果手机抓取京东cookie
  17. 最容易读进去的深度学习科普贴
  18. Pygame 实战(行动代号(单机版)):(二). 游戏编程
  19. C++实现 L1-021 重要的话说三遍 (5分)
  20. sketch measure 导出html,Sketch measure 导出规范卡住的问题

热门文章

  1. 购物车(session版)
  2. 计算机毕业设计ssm+vue基本微信小程序的拼车自助服务小程序
  3. Ubuntu下磁盘管理
  4. 华为服务器centos安装系统,华为裸金属服务器泰山200安装Centos7图文解析
  5. 滚动视差让你不相信“眼见为实”
  6. 基于御安全APK加固的游戏反外挂方案
  7. AAAI 2019 论文解读:卷积神经网络继续进步
  8. 接口报错500是什么意思_HTTP 500错误是什么意思?
  9. Spring报错 Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException
  10. 重天乾 (易經大意 韓長庚)