flume日志收集系统常见配置

2023-05-16

    前面介绍了flume入门实例,介绍了配置netcat信源,以及memory信道,logger信宿,其实flume常见的信源信道信宿有很多,这里介绍flume常用信源的三种方式:netcat,avro,exec,信道的三种方式:memory,jdbc,file,信宿的两种方式FILE_ROLL,hdfs。理论上,这些组合在一起,可以构建十多种配置方式,这里我们就通过几个例子来展示这些配置,通过示例来了解他们的区别。

    从信源类型来看,avro和netcat类似,都需要开启监听服务,而且模拟发送avro信息需要通过flume-ng命令,并且需要指定连接的主机和端口。exec这种信源,表示将一个命令执行的结果作为信源,交给flume来收集。

    从信道类型来看,memory是最常用的方式,是将收集的数据缓存在内存中,但是他的可靠性不够,一旦出现故障,数据就难以恢复,而jdbc是将数据默认缓存在derby数据库中,file类型是将数据缓存在文件系统中,但是后两者的效率没有memory高。

    从信宿类型来看,FILE_ROLL是将数据最终存储在文件系统中,但是大小会受到限制,因此一般是将数据存储在分布式系统如hadoop中,这里就是hdfs,指定了hdfs类型,就需要指定存储的路径。

    在信源上,我们可以指定拦截器,让收集的数据更加的精确,更加的满足我们的系统分析需求。默认的拦截器有时间戳,正则等,同时也支持用户自定义拦截器,这就需要用户编码来定义拦截器,然后配置在信源中。

    信源、信道、信宿这三个组件组成一个代理agent,他们在一个代理agent中,可以是多个信道,多个信宿的组合,在本文最后,我们会给出一个复杂的示例,展示两个信道memory对应两个信宿hdfs和FILE_ROLL的组合。下面我们给出几个实例,并运行。

1、将命令执行的结果保存到平面文件中的示例:

简单配置如下:

a2.sources=s2
a2.channels=c2
a2.sinks=k2

a2.sources.s2.type=exec
a2.sources.s2.command=cat /home/software/flume/flume-test

a2.sinks.k2.type=FILE_ROLL
a2.sinks.k2.sink.directory=/home/software/flume/files
a2.sinks.k2.sink.rollInterval=0

a2.channels.c2.type=file
a2.channels.c2.checkpointDir=/home/software/flume/fc/checkpoint
a2.channels.c2.dataDirs=/home/software/flume/fc/data

a2.sources.s2.channels=c2
a2.sinks.k2.channel=c2

启动flume,加载配置:

bin/flume-ng agent --conf conf --conf-file conf/exec.conf --name a2 -Dflume.root.logger=INFO,console

运行命令,打印日志,这个示例就结束了,运行的命令是查看/home/software/flume/flume-test这个文件的内容,并将内容写入files目录下。

这里只是为了了解exec这个类型的效果,在实际中,应该是执行一个命令,会循环的输出信息,比如执行一个定时任务,让结果保存在系统中。

2、将远程avro文件写入文件的示例:

配置如下:

a3.sources=s3
a3.channels=c3
a3.sinks=k3

a3.sources.s3.type=avro
a3.sources.s3.bind=0.0.0.0
a3.sources.s3.port=30000
a3.sources.s3.threads=5

a3.sinks.k3.type=FILE_ROLL
a3.sinks.k3.sink.directory=/home/software/flume/files
a3.sinks.k3.sink.rollInterval=0

a3.channels.c3.type=jdbc

a3.sources.s3.channels=c3
a3.sinks.k3.channel=c3

启动flume,加载配置:

bin/flume-ng agent --conf conf --conf-file conf/avro.conf --name a3 -Dflume.root.logger=INFO,console
启动成功,打印信息:

新开一个终端窗口,输入如下命令:

bin/flume-ng avro-client -H localhost -p 30000 -F message

从运行结果看,我们将message文件的内容通过avro客户端传输给了flume信源,最终成功写入了files文件夹下。这里,我们使用的信道是jdbc,默认使用的是derby数据库做缓存,我们可以看启动日志信道的相关信息:

2019-08-28 22:45:14,161 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.loadChannels(AbstractConfigurationProvider.java:151)] Creating channels
2019-08-28 22:45:14,190 (conf-file-poller-0) [INFO - org.apache.flume.channel.DefaultChannelFactory.create(DefaultChannelFactory.java:42)] Creating instance of channel c3 type jdbc
2019-08-28 22:45:14,213 (conf-file-poller-0) [WARN - org.apache.flume.channel.jdbc.impl.JdbcChannelProviderImpl.initializeDataSource(JdbcChannelProviderImpl.java:393)] No connection URL specified. Using embedded derby database instance.
2019-08-28 22:45:14,214 (conf-file-poller-0) [WARN - org.apache.flume.channel.jdbc.impl.JdbcChannelProviderImpl.initializeDataSource(JdbcChannelProviderImpl.java:428)] Overriding values for - driver: org.apache.derby.jdbc.EmbeddedDriver, user: saconnectUrl: jdbc:derby:/root/.flume/jdbc-channel/db;create=true, jdbc properties file: null, dbtype: DERBY
2019-08-28 22:45:15,777 (conf-file-poller-0) [WARN - org.apache.flume.channel.jdbc.impl.JdbcChannelProviderImpl.initializeChannelState(JdbcChannelProviderImpl.java:155)] JDBC channel will operate without a capacity limit.
2019-08-28 22:45:15,778 (conf-file-poller-0) [INFO - org.apache.flume.channel.jdbc.JdbcChannel.configure(JdbcChannel.java:91)] JDBC Channel initialized: c3

3、将网络数据写入hdfs中的示例:

配置如下:

a4.sources=s4
a4.channels=c4
a4.sinks=k4

a4.sources.s4.type=netcat
a4.sources.s4.bind=0.0.0.0
a4.sources.s4.port=30000

a4.channels.c4.type=memory
a4.channels.c4.capacity=1000
a4.channels.c4.transactionCapacity=100

a4.sinks.k4.type=hdfs
a4.sinks.k4.hdfs.path=/user/flume
a4.sinks.k4.hdfs.filePrefix=log
a4.sinks.k4.hdfs.rollInterval=0
a4.sinks.k4.hdfs.fileType=DataStream
a4.sinks.k4.hdfs.rollCount=3

a4.sources.s4.channels=c4
a4.sinks.k4.channel=c4

启动flume,加载配置:

bin/flume-ng agent --conf conf --conf-file conf/hdfs.conf --name a4 -Dflume.root.logger=INFO,console

启动成功之后,我们模拟发送http请求给127.0.0.1 30000,通过telnet登录远程连接,并输入内容,然后回车,我们这里模拟发送7次消息。

配置文件中,我们设置了hdfs文件回滚条数为3,即只能存储3个记录,这里模拟发送的7条消息,能够生成三个文件,其中,两个文件是写满的,因此是完整的文件,没有后缀tmp,最后一个文件没有写满,所以是一个临时文件。

我们看启动日志的打印信息,可以看到,随着输入,临时文件会变为完整文件。

在hdfs上检验文件内容:

4、添加拦截器的示例:

这里我们以网络请求写入hdfs为例,增加时间戳拦截器

配置如下:

a4.sources=s4
a4.channels=c4
a4.sinks=k4

a4.sources.s4.type=netcat
a4.sources.s4.bind=0.0.0.0
a4.sources.s4.port=30000
a4.sources.s4.interceptors=ts
a4.sources.s4.interceptors.ts.type=org.apache.flume.interceptor.TimestampInterceptor$Builder

a4.channels.c4.type=memory
a4.channels.c4.capacity=1000
a4.channels.c4.transactionCapacity=100

a4.sinks.k4.type=hdfs
a4.sinks.k4.hdfs.path=/user/flume/ts-%Y-%m-%d
a4.sinks.k4.hdfs.filePrefix=log-
a4.sinks.k4.hdfs.rollInterval=0
a4.sinks.k4.hdfs.fileType=DataStream
a4.sinks.k4.hdfs.rollCount=3

a4.sources.s4.channels=c4
a4.sinks.k4.channel=c4

这里时间戳拦截器会将收集的数据保存在对应日期的文件夹下,配置在信源上,但是可以作用在信宿上。

我们还是启动flume,加载配置文件:

bin/flume-ng agent --conf conf --conf-file conf/hdfs-ts.conf --name a4 -Dflume.root.logger=INFO,console

启动成功之后,我们通过telnet模拟发送4条消息:

消息发送成功,验证hdfs文件:

5、两个信道,两个信宿的示例:

信道均采用memory,信宿一个使用FILE_ROLL,一个是hdfs,相当于一个存在本地文件系统,一个存在hdfs上。

配置如下:

a5.sources=s5
a5.channels=mc1 mc2
a5.sinks=hdfssink filesink

a5.sources.s5.type=netcat
a5.sources.s5.bind=0.0.0.0
a5.sources.s5.port=30000
a5.sources.s5.interceptors=ts
a5.sources.s5.interceptors.ts.type=org.apache.flume.interceptor.TimestampInterceptor$Builder

a5.channels.mc1.type=memory
a5.channels.mc1.capacity=1000
a5.channels.mc1.transactionCapacity=100


a5.channels.mc2.type=memory
a5.channels.mc2.capacity=1000
a5.channels.mc2.transactionCapacity=100

a5.sinks.hdfssink.type=hdfs
a5.sinks.hdfssink.hdfs.path=/user/flume-%Y-%m-%d
a5.sinks.hdfssink.hdfs.filePrefix=log
a5.sinks.hdfssink.hdfs.rollInterval=0
a5.sinks.hdfssink.hdfs.rollCount=3
a5.sinks.hdfssink.hdfs.fileType=DataStream

a5.sinks.filesink.type=FILE_ROLL
a5.sinks.filesink.sink.directory=/home/software/flume/files
a5.sinks.filesink.sink.rollInterval=0


a5.sources.s5.channels=mc1 mc2
a5.sinks.hdfssink.channel=mc1
a5.sinks.filesink.channel=mc2

a5.sources.s5.selector.type=replicating

这个配置示例,综合了使用FILE_ROLL,hdfs作为信宿,时间戳拦截器作为信源拦截器的例子。

还是启动flume,加载配置:

bin/flume-ng agent --conf conf --conf-file conf/replicating.conf --name a5 -Dflume.root.logger=INFO,console

启动成功,通过telnet模拟发送4条消息:

消息发送成功,验证hdfs文件:

验证FILE_ROLL信宿的文件:

一般实际应用中,我们会收集kafka的消息,然后存入hdfs,配置思路还是一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flume日志收集系统常见配置 的相关文章

  • flume自定义拦截器实现定制收集日志需求

    flume默认提供了timestamp host static regex等几种类型的拦截器 xff0c timestamp host static等拦截器 xff0c 其实就是在消息头中增加了时间戳 xff0c 主机名 xff0c 键值对
  • Flume实战

    前言 在一个完整的大数据处理系统中 xff0c 除了hdfs 43 mapreduce 43 hive组成分析系统的核心之外 xff0c 还需要数据采集 结果数据导出 任务调度等不可或缺的辅助系统 xff0c 而这些辅助工具在hadoop生
  • Flume中 File Channel 的优化

    Flume中 File Channel 的优化 文章目录 Flume中 File Channel 的优化File Channel 的特点File Channel 的优化索引索引备份 Flume官方优化设计概述 xff08 Overview
  • Flume基础知识(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 概述 Flume用于离线日志的 采集与传输 Agent 单台机器a1
  • 几十条业务线日志系统如何收集处理?

    在互联网迅猛发展的今天 各大厂发挥十八般武艺的收集用户的各种信息 甚至包括点击的位置 我们也经常发现自己刚搜完一个东西 再打开网页时每个小广告都会出现与之相关联的商品或信息 在感叹智能的同时不惊想 什么时候泄露的行踪 许多公司的业务平台每天
  • Flume系统搭建和使用的一些经验总结-搭建篇

    对于很多公司来说 日志的收集和集中管理是一个必然要经历的阶段 我们公司在经历了一拖再拖之后 终于不得不开始搭建日志收集系统了 对于日志收集系统 我们的首选就是Flume 为何这么坚决呢 难道没有其他工具能做个这个事情么 当然有 不过 考虑到
  • 大数据技术面试-Flume、kafka

    大数据技术面试 Flume kafka 1 Flume组成有哪些 2 Flume拦截器有哪些知识点 3 Flume采集数据会丢失吗 4 FileChannel如何优化 5 如何控制Kafka丢不丢数据 6 Kafka分区分配策略默认哪两种
  • flume采集log4j日志到kafka

    简单测试项目 1 新建Java项目结构如下 测试类FlumeTest代码如下 package com demo flume import org apache log4j Logger public class FlumeTest priv
  • Flume 数据流监控——Ganglia的安装与部署

    1 Ganglia的安装 1 安装 dhttpd 服务与 php yasin hadoop102 flume sudo yum y install httpd php 2 安装其他依赖 atguigu hadoop102 flume sud
  • flume实验

    1 上传flume ng 1 5 0 cdh5 3 6 tar gz 至 opt modules cdh 并解压 2 编辑 conf flume env sh export JAVA HOME usr java jdk1 7 0 79 3
  • flume使用(二):采集远程日志数据到MySql数据库

    本文内容可查看目录 本文内容包含单节点 单agent 和多节点 多agent 采集远程日志 说明 一 环境 linux系统 Centos7 Jdk 1 7 Flume 1 7 0 二 安装 linux中jdk mysql的安装不多赘述 fl
  • Flume 学习

    开始启动flume的学习 todo
  • 第四章 Flume专题-日志采集工具

    一 Flume专题之组件及架构介绍 1 Flume概述 1 1 Flume定义 Flume是一种分布式的 高可靠的和高可用的服务 用于有效地收集 聚合和移动大量日志数据框架 Flume是一个简单灵活的基于流数据的体系结构 1 2 Flume
  • 如何在flume中同时使用regex_extractor选择器和多路复用拦截器?

    我正在测试 Flume 将数据加载到 hHase 中 并考虑使用 Flume 的选择器和拦截器进行并行数据加载 因为源和接收器之间的速度差距 所以 我想要用 Flume 做的是 使用拦截器 regexp extract 类型创建事件标头 使
  • Flume HDFS Sink 在 HDFS 上生成大量小文件

    我有一个使用 Flume 向 HDFS 发送 log4j 消息的玩具设置 我无法配置 hdfs 接收器以避免出现许多小文件 我以为我可以配置 hdfs 接收器在每次文件大小达到 10mb 时创建一个新文件 但它仍然创建大约 1 5KB 的文
  • Flume - 整个文件可以被视为 Flume 中的一个事件吗?

    我有一个用例 需要将目录中的文件提取到 HDFS 中 作为 POC 我在 Flume 中使用了简单的目录假脱机 其中我指定了源 接收器和通道 并且它工作得很好 缺点是我必须为进入不同文件夹的多种文件类型维护多个目录 以便更好地控制文件大小和
  • Flume的Spool Dir可以在远程机器上吗?

    每当新文件到达特定文件夹时 我就尝试将文件从远程计算机获取到我的 hdfs 我在flume中遇到了spool dir的概念 如果spool dir位于运行flume代理的同一台机器上 那么它工作得很好 有什么方法可以在远程计算机中配置假脱机
  • 运行 fatjar 时无法加载 log4j2

    我正在开发一个使用 log4j2 日志记录的项目 在 intellij 中开发时 一切正常 并且日志记录按预期完成 log4j2 xml 通过在启动时通过 intellij 设置传递给 jvm 的 java 属性进行链接 但是一旦我尝试运行
  • java.io.IOException:无法获取 LocationBlock 的块长度

    我正在使用 HDP 2 1 对于集群 我遇到了以下异常 并且 MapReduce 作业因此失败 实际上 我们定期使用 Flume 版本的数据创建表 1 4 我检查了映射器尝试读取的数据文件 但我找不到任何内容 2014 11 28 00 0
  • 为 Flume-ng 编写自定义 HTTPSource 处理程序

    是否有任何资源可以帮助我为 Flume ng 的 HTTPSource 编写自定义处理程序 我阅读了文档 其中有一个 Json 示例处理程序 但我想知道是否有人需要编写一个处理程序来从 XML 消息正文创建 Flume 事件 HttpSou

随机推荐

  • php 根据url自动生成缩略图

    原理 xff1a 设置apache rewrite xff0c 当图片不存在时 xff0c 调用php创建图片 例如 原图路径为 xff1a http localhost upload news 2013 07 21 1 jpg 缩略图路径
  • mailto 参数说明

    mailto 可以调用系统内置软件发送电子邮件 参数说明 mailto xff1a 收件人地址 xff0c 可多个 xff0c 用 分隔 cc xff1a 抄送人地址 xff0c 可多个 xff0c 用 分隔 bcc xff1a 密件抄送人
  • mysql 导入导出数据库

    mysql 导入导出数据库 1 导出数据 导出test 数据库 R 表示导出函数和存储过程 xff0c 加上使导出更完整 mysqldump u root p R test gt test sql 导出test数据库中user表 mysql
  • php 广告加载类

    php 广告加载类 xff0c 支持异步与同步加载 需要使用Jquery ADLoader class php lt php 广告加载管理类 Date 2013 08 04 Author fdipzone Ver 1 0 Func publ
  • 使用<img>标签加载php文件,记录页面访问讯息

    原理 xff1a 通过 lt img gt 标标签加载php文件 xff0c php文件会使用gd库生成一张1x1px的空白透明图片返回 xff0c 并记录传递的参数写入log文件 lt img src 61 34 sitestat php
  • tput 命令行使用说明

    什么是 tput xff1f tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作 通过使用 tput xff0c 您可以更改几项终端功能 xff0c 如移动或更改光标 更改文本属性 xff0c 以及清除终端屏幕的特
  • ROS2学习笔记(二)-- 多机通讯原理简介及配置方法

    在ROS1中由主节点 master 负责其它从节点的通信 xff0c 在同一局域网内通过设置主节点地址也可以实现多机通讯 xff0c 但是这种多机通讯网络存在一个严重的问题 xff0c 那就是所有从节点强依赖于主节点 xff0c 一旦运行主
  • 使用shell实现阿里云动态DNS

    https github com timwai aliyunDDNS shell 脚本全部使用基础的命令实现 xff0c 支持在openwrt中使用 修改以下参数为你自己的参数 ACCESS KEY ID 61 你的AccessKeyId
  • Java-两个较大的List快速取交集、差集

    工作中经常遇到需要取两个集合之间的交集 差集情况 xff0c 但是普通的retainAll 和removeAll 无法满足数据量大的情况 xff0c 由此就自己尝试运用其他的方法解决 注 xff1a 如果数据量小的情况下 xff0c 还是使
  • Xubuntu15.04更新系统源时出现错误提示W: GPG 错误:http://archive.ubuntukylin.com:10006 xenial InRelease: 由于没有公钥,无法验证

    在更新系统源后 xff0c 输入sudo apt get update之后出现提示 xff1a W GPG 错误 xff1a http archive ubuntukylin com 10006 xenial InRelease 由于没有公
  • ubuntu开启SSH服务远程登录

    ssh secure shell xff0c 提供安全的远程登录 从事嵌入式开发搭建linux开发环境中 xff0c ssh的服务的安装是其中必不可少的一步 ssh方便一个开发小组中人员登录一台服务器 xff0c 从事代码的编写 编译 运行
  • Python实现让视频自动打码,再也不怕出现少儿不宜的画面了

    人生苦短 我用Python 序言准备工作代码解析完整代码 序言 我们在观看视频的时候 xff0c 有时候会出现一些奇怪的马赛克 xff0c 影响我们的观影体验 xff0c 那么这些马赛克是如何精确的加上去的呢 xff1f 本次我们就来用Py
  • Docker安装nextcloud实验

    Docker安装nextcloud实验 修改验证方式 xff1a 从密钥到密码 sudo passwd root su root vi etc ssh sshd config 去掉下面前的 或修改yes no port 22 Address
  • Tesseract-OCR 字符识别---样本训练

    Tesseract是一个开源的OCR xff08 Optical Character Recognition xff0c 光学字符识别 xff09 引擎 xff0c 可以识别多种格式的图像文件并将其转换成文本 xff0c 目前已支持60多种
  • FPGA与OPENCV的联合仿真

    对于初学者来说 xff0c 图像处理行业 xff0c 最佳仿真方式 xff1a FPGA 43 OPENCV xff0c 因为OPENCV适合商业化 xff0c 适合自己写算法 1 xff09 中间交互数据介质 txt文档 2 xff09
  • 华硕P8Z77-V LX老主板转换卡升级NVMe M2硬盘经验,老主机的福音,质的飞跃

    每年双十一都是淘货升级老家伙的时候 xff0c 今年也不例外 xff0c 随着日子长久 xff0c 软件的增多 xff0c 虽然已经尽量装在系统盘以外的盘 xff0c 但C盘还是日渐不够用 xff0c 从以前的30G系统盘升到60G xff
  • linux 更换 软件源后 GPG错误

    linux 更换 软件源后 GPG错误 linux 软件源 GPG 签名 密钥 linux 更换 软件源后 GPG错误 http my oschina net emptytimespace blog 83633 如文章 1 中提到 xff1
  • ROS2学习笔记(四)-- 用方向键控制小车行走

    简介 xff1a 在上一节的内容中 xff0c 我们通过ROS2的话题发布功能将小车实时视频信息发布了出来 xff0c 同时使用GUI工具进行查看 xff0c 在这一节内容中 xff0c 我们学习一下如何订阅话题并处理话题消息 xff0c
  • flume大数据框架数据采集系统

    flume是cloudera开源的数据采集系统 xff0c 现在是apache基金会下的子项目 xff0c 他是hadoop生态系统的日志采集系统 xff0c 用途广泛 xff0c 可以将日志 网络数据 kafka消息收集并存储在大数据hd
  • flume日志收集系统常见配置

    前面介绍了flume入门实例 xff0c 介绍了配置netcat信源 xff0c 以及memory信道 xff0c logger信宿 xff0c 其实flume常见的信源信道信宿有很多 xff0c 这里介绍flume常用信源的三种方式 xf