当前位置: 首页 > 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包含神经网络中…...

【前端开发】JS+Vuew3请求列表数据并分页

应用技术&#xff1a;原生JavaScript Vue3 $(function () {ini(); });function ini() {const { createApp, ref, onMounted } Vue;createApp({setup() {const data ref({studentList: [],page: 1,pageSize: 10,});const getStudentList async (page, key) > {window.ons…...

Trimble X12助力电力管廊数据采集,为机器人巡视系统提供精准导航支持

地下电缆是一个城市重要的基础设施&#xff0c;它不仅具有规模大、范围广、空间分布复杂等特点&#xff0c;更重要的是它还承担着信息传输、能源输送等与人们生活息息相关的重要功能&#xff0c;也是一个城市赖以生存和发展的物质基础。 01、项目概述 本次项目是对某区域2公里左…...

Docker 清理镜像策略详解

文章目录 前言一、删除 Docker 镜像1. 查看当前镜像2. 删除单个镜像3. 删除多个镜像4. 删除所有未使用的镜像5. 删除悬空的 Docker 镜像6. 根据模式删除镜像7. 删除所有镜像 二、删除 Docker 容器1. 查找容器2. 删除一个或多个特定容器3. 退出时删除容器4. 删除所有已退出的容器…...

【Linux】TCP网络编程

目录 V1_Echo_Server V2_Echo_Server多进程版本 V3_Echo_Server多线程版本 V3-1_多线程远程命令执行 V4_Echo_Server线程池版本 V1_Echo_Server TcpServer的上层调用如下&#xff0c;和UdpServer几乎一样&#xff1a; 而在InitServer中&#xff0c;大部分也和UDP那里一样&…...

排序学习整理(2)

上集回顾 排序学习整理&#xff08;1&#xff09;-CSDN博客 2.3 交换排序 交换排序的基本思想是&#xff1a;根据序列中两个记录键值的比较结果&#xff0c;交换这两个记录在序列中的位置。 特点&#xff1a; 通过比较和交换操作&#xff0c;将键值较大的记录逐步移动到序列…...

AI蛋白质设计与人工智能药物设计

AI蛋白质设计与人工智能药物设计 AI蛋白质设计 一、蛋白质相关的深度学习简介 1.基础概念 1.1.机器学习简介&#xff1a;从手写数字识别到大语言模型 1.2.蛋白质结构预测与设计回顾 1.3.Linux简介 1.4.代码环境&#xff1a;VS code和Jupyter notebook* 1.5.Python关键概…...

IOS ARKit进行图像识别

先讲一下基础控涧&#xff0c;资源的话可以留言&#xff0c;抽空我把它传到GitHub上&#xff0c;这里没写收积分&#xff0c;竟然充值才能下载&#xff0c;我下载也要充值&#xff0c;牛&#xff01; ARSCNView 可以理解画布或者场景 1 配置 ARWorldTrackingConfiguration AR追…...

初级数据结构——二叉搜索树

目录 前言一、定义二、基本操作三、时间复杂度分析四、变体五、动态图解六、代码模版七、经典例题[1.——700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/)代码题解 [2.——938. 二叉搜索树的范围和](https://leetcode.cn/problems/ra…...

C++设计模式之组合模式中如何实现同一层部件的有序性

在组合模式中&#xff0c;为了实现同一层上部件的有序性&#xff0c;可以采取以下几种设计方法&#xff1a; 1. 使用有序集合 使用有序集合&#xff08;如 std::list、std::vector 或其他有序容器&#xff09;来存储和管理子部件。这种方法可以确保子部件按照特定顺序排列&am…...

duxapp RN 端使用AppUpgrade 进行版本更新

版本更新包含了组件和工具的组合 注册 下面这是 duxcms 入口文件检查更新的注册方法&#xff0c;注册的同时会检查更新 import {request,updateApp,userConfig } from ./utils// 检查app更新 setTimeout(async () > {if (process.env.TARO_ENV rn) {// eslint-disable-n…...