生产环境中:Flume 与 Prometheus 集成
在生产环境中,将 Apache Flume 与 Prometheus 集成的过程,需要借助 JMX Exporter 或 HTTP Exporter 来将 Flume 的监控数据转换为 Prometheus 格式。以下是详细的实现方法,连同原理和原因进行逐步解释,让刚接触的初学者也能完成集成。
原理和概念
-
Flume 的监控数据来源:
Flume 会暴露监控指标(如事件接收速率、Channel 容量等):- 通过 JMX(Java Management Extensions):用于 Java 应用的标准监控接口。
- 通过 HTTP:通过 REST API 提供 JSON 格式的监控数据。
-
Prometheus 的数据抓取方式:
Prometheus 定期从指定目标抓取监控指标。这些目标需要返回 Prometheus 可读的 Metrics 格式数据(key value格式)。 -
JMX Exporter 和 HTTP Exporter 的作用:
- JMX Exporter:将 Flume 的 JMX 数据转换为 Prometheus 格式。
- HTTP Exporter:将 Flume 的 HTTP 数据转换为 Prometheus 格式。
通过上述工具,可以让 Flume 的监控数据被 Prometheus 定期抓取,从而实现可视化和报警功能。
实现步骤:使用 JMX Exporter 集成
1. 下载并配置 JMX Exporter
-
下载 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 -
创建配置文件:
创建一个 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 的代理配置。
-
找到 Flume 启动脚本:
通常位于$FLUME_HOME/bin/flume-ng. -
修改启动参数:
编辑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 的配置文件路径。
-
重启 Flume:
bin/flume-ng agent -n <agent-name> -c conf -f <config-file>
3. 配置 Prometheus
-
修改 Prometheus 配置文件(
prometheus.yml):
添加以下内容,将 JMX Exporter 的地址作为抓取目标:scrape_configs:- job_name: 'flume'static_configs:- targets: ['<flume-host>:12345']解释:
job_name:为监控任务命名。targets:Flume 所在机器的 IP 和 JMX Exporter 的端口。
-
重启 Prometheus:
systemctl restart prometheus -
验证:
在 Prometheus 的 Web 界面(默认 http://<prometheus-host>:9090 )中搜索 flume_*,可以看到 Flume 的监控数据。
实现步骤:使用 HTTP Exporter 集成
如果不想使用 JMX,Flume 自带的 HTTP 监控端口也可以用来集成 Prometheus。
1. 启用 Flume HTTP 监控
-
确认 Flume HTTP 端口:
默认情况下,Flume 会在 41414 端口上暴露监控数据。可以在 Flume 配置文件(flume.conf)中检查:agent.monitoring.type=http agent.monitoring.port=41414 -
重启 Flume:
bin/flume-ng agent -n <agent-name> -c conf -f <config-file> -
验证 HTTP 输出:
访问 http://<flume-host>:41414/metrics,可以看到 JSON 格式的监控数据。
2. 使用 HTTP Exporter 转换数据
Prometheus 不能直接抓取 JSON 数据,需要使用 HTTP Exporter 转换成 Prometheus 格式。
-
部署 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 -
创建 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 的指标名称。
-
运行 HTTP Exporter:
./json_exporter --config.file=config.yml --listen-address=":9100"
3. 配置 Prometheus
-
修改 Prometheus 配置文件:
scrape_configs:- job_name: 'flume-http'static_configs:- targets: ['<exporter-host>:9100'] -
重启 Prometheus:
systemctl restart prometheus -
验证:
在 Prometheus 界面中搜索 flume_* ,可以看到 Flume 的 HTTP 数据。
总结
通过以上步骤,可以实现 Flume 到 Prometheus 的监控集成:
- 如果使用 JMX Exporter,修改 Flume 启动参数,直接暴露 JMX 数据。
- 如果使用 HTTP Exporter,将 Flume 的 HTTP 数据转换成 Prometheus 可读的格式。
在生产环境中,推荐 JMX Exporter,因其性能更高,配置更灵活。而 HTTP Exporter 则适合无法直接使用 JMX 的场景。无论哪种方式,都能实现 Flume 的指标采集、报警和可视化。
相关文章:
生产环境中:Flume 与 Prometheus 集成
在生产环境中,将 Apache Flume 与 Prometheus 集成的过程,需要借助 JMX Exporter 或 HTTP Exporter 来将 Flume 的监控数据转换为 Prometheus 格式。以下是详细的实现方法,连同原理和原因进行逐步解释,让刚接触的初学者也能完成集…...
求平均年龄
求平均年龄 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数…...
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 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂,机器学习就是在其中找到这些的规律,挖掘规律建立一个公式,导致对陌生的数…...
数据结构与算法——N叉树(自学笔记)
本文参考 N 叉树 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 遍历 前序遍历:A->B->C->E->F->D->G后序遍历:B->E->F->C->G->D->A层序遍历:A->B->C->D->…...
【趣味升级版】斗破苍穹修炼文字游戏HTML,CSS,JS
目录 图片展示 开始游戏 手动升级(满100%即可升级) 升级完成,即可解锁打怪模式 新增功能说明: 如何操作: 完整代码 实现一个简单的斗破苍穹修炼文字游戏,你可以使用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指针的过程,由clk_get、devm_clk_get、clk_get_sys、of_clk_get、of_clk_g…...
安装MySQL 5.7 亲测有效
前言:本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程(全…...
《Django 5 By Example》阅读笔记:p455-p492
《Django 5 By Example》学习第 16 天,p455-p492 总结,总计 38 页。 一、技术总结 1.myshop (1)打折功能 使用折扣码实现,但是折扣码是手动生成的,感觉实际业务中应该不是这样的。 (2)推荐功能 使用 Redis 做缓存࿰…...
Element-UI 官网的主题切换动画
文章目录 实现圆形扩散过渡动画 实现一下 Element-UI 官网的主题切换动画加粗样式 实现 首先我们起一个 html 文件,写一个按钮,以及简单的背景颜色切换,来模拟主题的切换 想要实现过渡效果,需要先用到一个 JavaScript 的原生方…...
Golang 构建学习
Golang 构建学习 如何搭建Golang开发环境 1. 下载GOlang包 https://golang.google.cn/dl/ 在地址上下载Golang 2. 配置包环境 修改全局环境变量,GOPROXY,GOPATH,GOROOT GOPROXYhttps://goproxy.cn,direct GOROOT"" // go二进…...
VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)
本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu (1)安装增强功能(Guest Additions) 首先,在网上下载VBoxGuestAdditions光盘映像文件 下载地址:Index of http://…...
分析 系统滴答时钟(tickClock),设置72MHz系统周期,如何实现1毫秒的系统时间?
一、CubeMX相关配置 1.1 相关引脚配置 1.2 相关时钟数配置 1.3 打开程序源码 二、相关函数分析...
C++优选算法十七 多源BFS
1.单源最短路问题 一个起点一个终点。 定义:在给定加权图中,选择一个顶点作为源点,计算该源点到图中所有其他顶点的最短路径长度。 2.多源最短路问题 定义:多源最短路问题指的是在图中存在多个起点,需要求出从这些…...
Mongodb入门到放弃
Mongodb分片概括 分片在多台服务器上分布数据的方法, Mongodb使用分片来支持具有非常大的数据集和高吞吐量的操作的部署 具有大数据集和高吞吐量应用程序的数据库系统,可以挑战单台服务器的容量。 例如,高查询率可以耗尽服务器的cpu容量&…...
青藤云安全携手财信证券,入选金融科技创新应用优秀案例
11月29日,由中国信息通信研究院主办的第四届“金信通”金融科技创新应用案例评选结果正式发布。财信证券与青藤云安全联合提交的“基于RASP技术的API及数据链路安全治理项目”以其卓越的创新性和先进性,成功入选金融科技创新应用优秀案例。 据悉&#x…...
在CentOS系统中安装工具包的时候报错的解决方法
我刚装了一个新的虚拟机,打算安装一些工具出现了错误信息 执行的命令如下: 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加载失败
一切本来很顺利哒 但是,当我用快捷方式打开时,就出现了这个错误。进入文件路径,是有这个的; 在文件路径直接打开,也会提示错误 原因竟然是我改了个名字: 随便选的文件路径,空的,文件名为Acr…...
14、保存与加载PyTorch训练的模型和超参数
文章目录 1. state_dict2. 模型保存3. check_point4. 详细保存5. Docker6. 机器学习常用库 1. state_dict nn.Module 类是所有神经网络构建的基类,即自己构建一个深度神经网络也是需要继承自nn.Module类才行,并且nn.Module中的state_dict包含神经网络中…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
