如何利用flume进行日志采集

介绍    

    Apache Flume 是一个分布式、可靠、高可用的日志收集、聚合和传输系统。它常用于将大量日志数据从不同的源(如Web服务器、应用程序、传感器等)收集到中心化的存储或数据处理系统中。

基本概念

  • Agent(代理): Flume 中的基本工作单元,用于数据的采集、传输和处理。
  • Source(数据源): 代理中的组件,负责接收和发送数据到 Flume。
  • Channel(通道): 用于临时存储数据的缓冲区,用于在 Source 和 Sink 之间传输数据。
  • Sink(数据目的地): 代理中的组件,负责将数据传送到指定的目的地,如 HDFS、Kafka es等。

安装步骤

安装和配置 Flume

下载并安装 Apache Flume。从 Apache Flume 官网 下载适用于你环境的版本,并按照官方文档进行安装和配置。

我下载的是flume-v1.11.0版本,下载地址:Apache Download Mirrors

下载完成后上传到服务器的/opt/software目录

1.将 apache-flume-1.11.0-bin.tar.gz 上传到 linux 的/opt/software 目录下2.解压 apache-flume-1.11.0-bin.tar.gz 
tar -zxf apache-flume-1.11.0-bin.tar.gz3.修改 apache-flume-1.11.0-bin 的名称为 flume
mv apache-flume-1.11.0-bin flume4.将 flume/conf 下的 flume-env.sh.template 文件重命名为 flume-env.sh,并配置 flumeenv.sh 文件
mv flume-env.sh.template flume-env.shvi flume-env.sh
# 添加java环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

配置环境变量

vim /etc/profile#FLUME
export FLUME_HOME=/opt/software/flume
export PATH=$PATH:$FLUME_HOME/binsource /etc/profile

查看版本:flume-ng version

定义数据流

        创建 Flume 配置文件,定义数据流。这个配置文件描述了数据流的来源、通道和目的地。一个基本的 Flume 配置文件可能包含以下几个关键组件:

  • Source(数据源):定义数据的来源,如日志文件、网络端口、Kafka 等。
  • Channel(通道):定义数据在 Flume 内部的缓冲区,暂存数据,确保可靠地传输。
  • Sink(数据目的地):定义数据的最终目的地,可以是 HDFS、HBase、Kafka 等。
  1. 配置 Source、Channel 和 Sink:

    • 在 Flume 配置文件中配置 Source、Channel 和 Sink。你需要根据你的数据来源和目的地的不同选择合适的 Source、Channel 和 Sink,并配置相关参数。
  2. 启动 Flume Agent:

    • 运行 Flume Agent,并指定 Flume 配置文件。例如:flume-ng agent -n agent_name -c conf -f conf/flume-conf.properties
  3. 监控和管理:

    • 使用 Flume 的监控和管理工具来跟踪数据流、监控性能,并对 Flume 进行管理。
  4. 测试和优化:

    • 测试数据流,确保数据能够按预期采集、传输和存储。根据需要进行优化配置,以提高性能和稳定性。

示例配置文件

   以下是一个简单的 Flume 配置文件示例:

  1. 创建一个flume-agent-conf.yml并写入以下内容

# 定义 agent 名称
agent1.sources = source1
agent1.channels = channel1
agent1.sinks = sink1# 配置数据源
agent1.sources.source1.type = exec
agent1.sources.source1.command = tail -F /opt/test.log
agent1.sources.source1.channels = channel1# 配置通道
agent1.channels.channel1.type = memory
agent1.channels.channel1.capacity = 1000
agent1.channels.channel1.transactionCapacity = 100# 配置数据目的地
agent1.sinks.sink1.type = logger
agent1.sinks.sink1.channel = channel1

上述配置文件定义了一个名叫agent1的实例,数据来源为tail -F /opt/test.log,收集test.log的内容,并且通过sink配置输出到控制台

2.通过命令启动agent

flume-ng agent -n agent1 -c conf -f conf/flume-agent-conf.properties

3.往test.log里写入内容,vi test.log

4.查看agent日志,tail -f flume.log,能够看到以下内容输出,表示log采集成功。

         上面是一个很简单的flume采集示例,其实flume 可以将收集的日志输出到指定的目的地(如 HDFS、HBase、Kafka 等)。要查看已收集的日志,需要前往 Flume 配置文件中指定的输出目的地(sink),并使用相应的工具或方式来访问这些日志。

        例如,如果 Flume 配置将日志输出到 HDFS 中,可以使用 Hadoop 命令来查看或下载这些日志。如果将日志发送到 Kafka,则可以使用 Kafka 相关的命令或工具来消费这些消息。

   根据你的具体需求和环境配置更复杂的 Flume 配置文件,并确保理解每个组件的作用和配置参数的含义。 Flume 提供了丰富的 Source、Channel 和 Sink 类型以及各种配置选项,可以根据实际场景选择适合的组件和配置。

Flume 的常用组件

  • Avro Source: 从 Avro 格式数据源接收数据。
  • File Source: 从文件系统中的文件接收数据。
  • Memory Channel: 在内存中存储事件的通道。
  • HDFS Sink: 将数据写入 HDFS 目标的 Sink。

注意事项

  • 通道容量和事务容量的调整:根据需要调整 Flume 通道的容量和事务容量,确保适应大型数据的传输。
  • 合理配置 Source 和 Sink:根据实际情况选择合适的 Source 和 Sink 类型。
  • 数据格式正确性:确保发送到 Flume 的数据符合所需的格式,以避免消息被截断。

结语

        Apache Flume 是一个强大的数据收集和传输工具,可以轻松地处理大量的数据流。使用本文提供的示例和概念,可以开始使用 Flume 并适应不同的数据采集和传输需求。本篇文章就介绍到这里,感兴趣的同学可以自己去深入研究,使用flume完成日志采集、关键字告警等一整套的业务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/298097.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式--适配器模式

实验8:适配器模式 本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解适配器模式的动机,掌握该模式的结构; 2、能够利用适配器模式解决实际问题。 [实验任务]:双向适配器 实现一个双向…

语法树的画法(根据文法求字符串)

目录 1.语法树的画法 2.语法树的短语 3.直接短语(直接到根部) 4.素短语 5.句柄 6.算符优先分析句型 1.语法树的画法 文法G[E]:E->EE | E*E | (E) | i ,字符串 ii*i 推导方式有两种最左推导和最右推导(推导的技巧就是逐步靠近字符串…

【Hadoop】Zookeeper架构/特点

Zookeeper 中的角色主要有以下三类: Zookeeper需要保证高可用性和强一致性为了支持更多的客户端,需要增加更多Server,但是Server增多,意味着投票阶段延迟增大,会影响整个系统的性能。所以在3.3.0中ZK引入的新角色&…

微服务架构<2>

在电商项目中,我们针对一些核心业务,比较复杂的业务需要做一些设计以及优化的过程首先我们针对于订单的模块拆分了2个子模块1.order-curr实时下单业务 2.order-his 做一些历史的订单归档我们的订单业务 >商品添加至购物车 >购物车结算--> 订单…

Python爬虫中文乱码处理实例代码解析

更多Python学习内容:ipengtao.com 大家好,我是彭涛,今天为大家分享 Python爬虫中文乱码处理实例代码解析。全文2800字,阅读大约8分钟 在进行网络数据抓取时,常常会遇到中文乱码的问题,这可能导致数据无法正…

大数据应用开发1——配置基础环境

一、基础环境配置 1.配置虚拟网络 1.1、点击1、编辑2和3, 1.2、点开4,编辑网关 2、配置虚拟机环境 1.1、安装一台虚拟机,使用root用户登录,打开终端 1.2修改主机名 终端输入: vim /etc/hostname使用vim编辑/etc/ho…

nosql-redis整合测试

nosql-redis整合测试 1、创建项目并导入redis2、配置redis3、写测试类4、在redis中创建key5、访问80826、在集成测试中测试方法 1、创建项目并导入redis 2、配置redis 3、写测试类 4、在redis中创建key 5、访问8082 6、在集成测试中测试方法 package com.example.boot3.redis;…

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.广义正态分布算法4.实验参数设定…

【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调双向队列 二叉树 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动…

【GitHub精选项目】抖音/ TikTok 视频下载:TikTokDownloader 操作指南

前言 本文为大家带来的是 JoeanAmier 开发的 TikTokDownloader 项目,这是一个高效的下载 抖音/ TikTok 视频的开源工具。特别适合用户们保存他们喜欢的视频或分享给其他人。 TikTokDownloader 是一个专门设计用于下载 TikTok 视频的工具,旨在为用户提供一…

【AI提示词故事】雪的诗意:静谧与活力的奇妙交织

雪的诗意:沉浸在雪景的浪漫氛围中 冬日的清晨,窗外的世界被一层洁白的雪覆盖着,仿佛是大自然为我们准备的一幅美丽画卷。 我走出房门,踏上雪地, 那柔软的雪粒在脚下发出轻柔的咯吱声,仿佛是在诉说着冬日的…

九、Seata的AT模式

目录 9.1 什么是弱一致性 ?9.2 Seata的弱一致性9.3 Seata的AT模式介绍9.4 AT模式流程图9.5 AT模式注意点9.6 全局锁的理解1、认识全局锁2、注册全局锁3、校验(获取)全局锁4、释放锁5、结论 9.7 AT的多数据源场景 9.1 什么是弱一致性 &#xf…