当前位置: 首页 > news >正文

生产环境中:Flume 与 Prometheus 集成

        在生产环境中,将 Apache Flume 与 Prometheus 集成的过程,需要借助 JMX Exporter 或 HTTP Exporter 来将 Flume 的监控数据转换为 Prometheus 格式。以下是详细的实现方法,连同原理和原因进行逐步解释,让刚接触的初学者也能完成集成。


原理和概念

  1. Flume 的监控数据来源
    Flume 会暴露监控指标(如事件接收速率、Channel 容量等):

    • 通过 JMX(Java Management Extensions):用于 Java 应用的标准监控接口。
    • 通过 HTTP:通过 REST API 提供 JSON 格式的监控数据。
  2. Prometheus 的数据抓取方式
    Prometheus 定期从指定目标抓取监控指标。这些目标需要返回 Prometheus 可读的 Metrics 格式数据key value 格式)。

  3. JMX Exporter 和 HTTP Exporter 的作用

    • JMX Exporter:将 Flume 的 JMX 数据转换为 Prometheus 格式。
    • HTTP Exporter:将 Flume 的 HTTP 数据转换为 Prometheus 格式。

        通过上述工具,可以让 Flume 的监控数据被 Prometheus 定期抓取,从而实现可视化和报警功能。


实现步骤:使用 JMX Exporter 集成

1. 下载并配置 JMX Exporter

  1. 下载 JMX Exporter
    到 Prometheus JMX Exporter 的 GitHub 页面,下载 JAR 包:

    wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar
    
  2. 创建配置文件
    创建一个 YAML 文件(如 jmx_config.yml),定义需要监控的指标。示例内容如下:

    rules:- pattern: ".*"name: "flume_$1"type: "GAUGE"labels:component: "$2"
    

    原因

    • rules 定义了哪些 JMX 指标会被暴露。
    • pattern 通过正则表达式匹配 JMX 属性。
    • name 定义 Prometheus 的指标名称。

2. 修改 Flume 启动脚本

为了让 Flume 支持 JMX Exporter,需要在其 JVM 启动参数中添加 JMX Exporter 的代理配置。

  1. 找到 Flume 启动脚本
    通常位于$FLUME_HOME/bin/flume-ng. 

  2. 修改启动参数
    编辑 flume-ng,找到包含 JAVA_OPTS 的部分,加入以下内容:

    JAVA_OPTS="$JAVA_OPTS -javaagent:/path/to/jmx_prometheus_javaagent-0.17.2.jar=12345:/path/to/jmx_config.yml"
    

    解释(按照自己的实际需要修改)

    • -javaagent:指定加载的代理 JAR。
    • 12345:JMX Exporter 监听的端口。
    • /path/to/jmx_config.yml:JMX Exporter 的配置文件路径。
  3. 重启 Flume

    bin/flume-ng agent -n <agent-name> -c conf -f <config-file>
    

3. 配置 Prometheus

  1. 修改 Prometheus 配置文件prometheus.yml):
    添加以下内容,将 JMX Exporter 的地址作为抓取目标:

    scrape_configs:- job_name: 'flume'static_configs:- targets: ['<flume-host>:12345']
    

    解释

    • job_name:为监控任务命名。
    • targets:Flume 所在机器的 IP 和 JMX Exporter 的端口。
  2. 重启 Prometheus

    systemctl restart prometheus
    
  3. 验证
    在 Prometheus 的 Web 界面(默认 http://<prometheus-host>:9090 )中搜索 flume_*,可以看到 Flume 的监控数据。


实现步骤:使用 HTTP Exporter 集成

如果不想使用 JMX,Flume 自带的 HTTP 监控端口也可以用来集成 Prometheus。

1. 启用 Flume HTTP 监控

  1. 确认 Flume HTTP 端口
    默认情况下,Flume 会在 41414 端口上暴露监控数据。可以在 Flume 配置文件(flume.conf)中检查:

    agent.monitoring.type=http
    agent.monitoring.port=41414
    
  2. 重启 Flume

    bin/flume-ng agent -n <agent-name> -c conf -f <config-file>
    
  3. 验证 HTTP 输出
    访问 http://<flume-host>:41414/metrics,可以看到 JSON 格式的监控数据。


2. 使用 HTTP Exporter 转换数据

Prometheus 不能直接抓取 JSON 数据,需要使用 HTTP Exporter 转换成 Prometheus 格式。

  1. 部署 HTTP Exporter
    下载并运行 HTTP Exporter(如 json_exporter)。

    wget https://github.com/prometheus-community/json_exporter/releases/download/v0.5.0/json_exporter-0.5.0.linux-amd64.tar.gz
    tar -xvzf json_exporter-0.5.0.linux-amd64.tar.gz
    
  2. 创建 HTTP Exporter 配置
    创建 config.yml 文件,定义 JSON 转换规则:

    metrics:- name: flume_events_receivedpath: $.Source.EventReceivedtype: GAUGE- name: flume_channel_sizepath: $.Channel.ChannelSizetype: GAUGE
    

    解释

    • path 定义了 JSON 数据中监控指标的位置(使用 JSONPath 语法)。
    • name 定义 Prometheus 的指标名称。
  3. 运行 HTTP Exporter

    ./json_exporter --config.file=config.yml --listen-address=":9100"
    

3. 配置 Prometheus

  1. 修改 Prometheus 配置文件

    scrape_configs:- job_name: 'flume-http'static_configs:- targets: ['<exporter-host>:9100']
    
  2. 重启 Prometheus

    systemctl restart prometheus
    
  3. 验证
    在 Prometheus 界面中搜索 flume_* ,可以看到 Flume 的 HTTP 数据。


总结

通过以上步骤,可以实现 Flume 到 Prometheus 的监控集成:

  1. 如果使用 JMX Exporter,修改 Flume 启动参数,直接暴露 JMX 数据。
  2. 如果使用 HTTP Exporter,将 Flume 的 HTTP 数据转换成 Prometheus 可读的格式。

        在生产环境中,推荐 JMX Exporter,因其性能更高,配置更灵活。而 HTTP Exporter 则适合无法直接使用 JMX 的场景。无论哪种方式,都能实现 Flume 的指标采集、报警和可视化。

相关文章:

生产环境中:Flume 与 Prometheus 集成

在生产环境中&#xff0c;将 Apache Flume 与 Prometheus 集成的过程&#xff0c;需要借助 JMX Exporter 或 HTTP Exporter 来将 Flume 的监控数据转换为 Prometheus 格式。以下是详细的实现方法&#xff0c;连同原理和原因进行逐步解释&#xff0c;让刚接触的初学者也能完成集…...

求平均年龄

求平均年龄 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 班上有学生若干名&#xff0c;给出每名学生的年龄&#xff08;整数&#xff09;&#xff0c;求班上所有学生的平均年龄&#xff0c;保留到小数…...

Ardusub源码剖析(1)——AP_Arming_Sub

代码 AP_Arming_Sub.h #pragma once#include <AP_Arming/AP_Arming.h>class AP_Arming_Sub : public AP_Arming { public:AP_Arming_Sub() : AP_Arming() { }/* Do not allow copies */CLASS_NO_COPY(AP_Arming_Sub);bool rc_calibration_checks(bool display_failure)…...

【NLP 2、机器学习简介】

人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂&#xff0c;机器学习就是在其中找到这些的规律&#xff0c;挖掘规律建立一个公式&#xff0c;导致对陌生的数…...

数据结构与算法——N叉树(自学笔记)

本文参考 N 叉树 - LeetBook - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 遍历 前序遍历&#xff1a;A->B->C->E->F->D->G后序遍历&#xff1a;B->E->F->C->G->D->A层序遍历&#xff1a;A->B->C->D->…...

【趣味升级版】斗破苍穹修炼文字游戏HTML,CSS,JS

目录 图片展示 开始游戏 手动升级&#xff08;满100%即可升级&#xff09; 升级完成&#xff0c;即可解锁打怪模式 新增功能说明&#xff1a; 如何操作&#xff1a; 完整代码 实现一个简单的斗破苍穹修炼文字游戏&#xff0c;你可以使用HTML、CSS和JavaScript结合来构建…...

【Oracle】个人收集整理的Oracle常用SQL及命令

【建表】 create table emp( id number(12), name nvarchar2(20), primary key(id) ); 【充值一】 insert into emp select rownum,dbms_random.string(*,dbms_random.value(6,20)) from dual connect by level<101; 【充值二】 begin for i in 1..100 loop inser…...

Linux内核4.14版本——ccf时钟子系统(5)——通用API

1. clk_get 1.1 __of_clk_get_by_name 1.2 clk_get_sys 2. clk_prepare_enable 2.1 clk_prepare 2.2 clk_enable 3. clk_set_rate 1. clk_get clock get是通过clock名称获取struct clk指针的过程&#xff0c;由clk_get、devm_clk_get、clk_get_sys、of_clk_get、of_clk_g…...

安装MySQL 5.7 亲测有效

前言&#xff1a;本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程&#xff08;全…...

《Django 5 By Example》阅读笔记:p455-p492

《Django 5 By Example》学习第 16 天&#xff0c;p455-p492 总结&#xff0c;总计 38 页。 一、技术总结 1.myshop (1)打折功能 使用折扣码实现&#xff0c;但是折扣码是手动生成的&#xff0c;感觉实际业务中应该不是这样的。 (2)推荐功能 使用 Redis 做缓存&#xff0…...

Element-UI 官网的主题切换动画

文章目录 实现圆形扩散过渡动画 实现一下 Element-UI 官网的主题切换动画加粗样式 实现 首先我们起一个 html 文件&#xff0c;写一个按钮&#xff0c;以及简单的背景颜色切换&#xff0c;来模拟主题的切换 想要实现过渡效果&#xff0c;需要先用到一个 JavaScript 的原生方…...

Golang 构建学习

Golang 构建学习 如何搭建Golang开发环境 1. 下载GOlang包 https://golang.google.cn/dl/ 在地址上下载Golang 2. 配置包环境 修改全局环境变量&#xff0c;GOPROXY&#xff0c;GOPATH&#xff0c;GOROOT GOPROXYhttps://goproxy.cn,direct GOROOT"" // go二进…...

VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)

本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu &#xff08;1&#xff09;安装增强功能&#xff08;Guest Additions&#xff09; 首先&#xff0c;在网上下载VBoxGuestAdditions光盘映像文件 下载地址&#xff1a;Index of http://…...

分析 系统滴答时钟(tickClock),设置72MHz系统周期,如何实现1毫秒的系统时间?

一、CubeMX相关配置 1.1 相关引脚配置 1.2 相关时钟数配置 1.3 打开程序源码 二、相关函数分析...

C++优选算法十七 多源BFS

1.单源最短路问题 一个起点一个终点。 定义&#xff1a;在给定加权图中&#xff0c;选择一个顶点作为源点&#xff0c;计算该源点到图中所有其他顶点的最短路径长度。 2.多源最短路问题 定义&#xff1a;多源最短路问题指的是在图中存在多个起点&#xff0c;需要求出从这些…...

Mongodb入门到放弃

Mongodb分片概括 分片在多台服务器上分布数据的方法&#xff0c; Mongodb使用分片来支持具有非常大的数据集和高吞吐量的操作的部署 具有大数据集和高吞吐量应用程序的数据库系统&#xff0c;可以挑战单台服务器的容量。 例如&#xff0c;高查询率可以耗尽服务器的cpu容量&…...

青藤云安全携手财信证券,入选金融科技创新应用优秀案例

11月29日&#xff0c;由中国信息通信研究院主办的第四届“金信通”金融科技创新应用案例评选结果正式发布。财信证券与青藤云安全联合提交的“基于RASP技术的API及数据链路安全治理项目”以其卓越的创新性和先进性&#xff0c;成功入选金融科技创新应用优秀案例。 据悉&#x…...

在CentOS系统中安装工具包的时候报错的解决方法

我刚装了一个新的虚拟机&#xff0c;打算安装一些工具出现了错误信息 执行的命令如下&#xff1a; yum install -y yum-utils device-mapper-persistent-data lvm2错误信息如下 Cannot find a valid baseurl for repo: base/7/x86_64搜索了一下原因有好几种。 一是网络不通…...

cad软件打不开报错cad acbrandres dll加载失败

一切本来很顺利哒 但是&#xff0c;当我用快捷方式打开时&#xff0c;就出现了这个错误。进入文件路径&#xff0c;是有这个的&#xff1b; 在文件路径直接打开&#xff0c;也会提示错误 原因竟然是我改了个名字&#xff1a; 随便选的文件路径&#xff0c;空的,文件名为Acr…...

14、保存与加载PyTorch训练的模型和超参数

文章目录 1. state_dict2. 模型保存3. check_point4. 详细保存5. Docker6. 机器学习常用库 1. state_dict nn.Module 类是所有神经网络构建的基类&#xff0c;即自己构建一个深度神经网络也是需要继承自nn.Module类才行&#xff0c;并且nn.Module中的state_dict包含神经网络中…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...