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

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...