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

Prometheus-RabbitMQ Exporter

文章目录

  • 一、介绍
    • 监控插件
    • 两个插件的区别
  • 一、 官方插件 rabbitmq_prometheus
    • 1 配置 RabbitMQ 集群名称
    • 2 授权使用插件
      • 2.1 配置文件方式
      • 2.2 命令行方式
    • 3 监听地址和端口
    • 4 RabbitMQ 插件获取指标的频率
    • 5 配置到 Prometheus
    • 6 关于聚合指标和每个对象指标
      • 6.1 获取聚合指标 `/metrics`
      • 6.2 每次请求获取到每个监控指标的监控数据 `/metrics/per-object`
      • 6.3 请求获取指定某个监控指标的监控数据 `/metrics/detailed`
    • 7 部分通用指标
  • 二、rabbitmq_exporter
    • 1 部署
      • 1.1 二进制方式:
      • 1.2 docker-compose 方式
    • 2 配置
      • 2.1 使用变量
        • 可用的环境变量
      • 2.2 使用 JSON 配置文件
    • 3 Metrics
      • 3.1 Global
      • Overview
      • Queues
        • Queues - Gauge
        • Queues - Counter
      • Exchanges - Counter
      • Node - Counter
      • Connections - Gauge
      • Shovel
      • Memory
  • 三、dashboard
    • 1 健康指标
    • 2 指标和图表
    • 3 许多指标没有“正确”的阈值
        • 关于官方测试用例
  • 四、kubernetes 的 rabbitmq-server operrator
  • 五、使用 TLS 保护 exporter

一、介绍

监控插件

有两种:

  • rabbitmq-server(3.8版本以上) rabbitmq 官方自带的插件 rabbitmq_prometheus
  • Prometheus 官方推荐的非 rabbitmq官方插件 rabbitmq_exporter

两个插件的区别

官方插件

  • 具有 runtime/erlang 的监控指标
  • 有聚合的或每个对象的度量
  • 无法禁用某些不需要的监控指标,但是 Prometheus 可以单独获取某些监控指标数据

非 Rabbitmq 官方插件

  • 适用于 Rabbitmq 的新旧版本
  • 具有更多配置选项/筛选对象

可能最好的解决方案是同时使用两个:

  • 官方的普罗米修斯插件不能跳过收集一些指标的能力。在官方插件中,您可以选择聚合度量或每个对象,但是不能跳过不需要的监控指标。

  • 另一方面,官方插件提供erlang 虚拟机的监控指标,这也很重要。

所以建议两者这样用。在官方插件中,禁用每个对象的度量,并且只使用它来收集与erlang相关的度量,使用非官方插件收集其他所有监控指标。

对于以上建议,仅仅是个人建议。如果想简单实现,使用官方的插件即可。

一、 官方插件 rabbitmq_prometheus

1 配置 RabbitMQ 集群名称

检查每个节点的机群名称是否一致

rabbitmq-diagnostics -q cluster_status

如果不一致,修改为一致,并且这样也可以和其他被监控的集群区别开来.
只需下集群中的任意节点执行一次即可。

rabbitmqctl -q set_cluster_name your-cluster-name

2 授权使用插件

2.1 配置文件方式

重启 RabbitMQ 服务生效
/etc/rabbitmq/enabled_plugins 文件中添加如下内容

[rabbitmq_prometheus]

2.2 命令行方式

立即生效

rabbitmq-plugins enable rabbitmq_prometheus

如果非首次部署后开启监控插件,可以同时使用两者结合,这样无需重启服务,并且在下次服务重启后,插件也是永久生效可用的。

3 监听地址和端口

此插件开启成功后,默认监听 TCP 端口 15692,监听地址是服务器上的所有地址。

此端口可以使用如下配置方式覆盖修改:

prometheus.tcp.port = 15692

可以使用如下方式覆盖修改监听的地址:

prometheus.tcp.ip = 0.0.0.0

可以使用如下命令检查每个节点监听的端口

rabbitmq-diagnostics -s listeners

确认是否成功开启

curl -s localhost:15692/metrics | head -n 3

4 RabbitMQ 插件获取指标的频率

默认情况下,rabbitmq_prometheus 插件每隔 5000 毫秒(5 秒)抓取一次监控指标数据。
生产环境,建议修改为 10000(10秒),并且将 Prometheus 的抓取间隔设置为 15秒。

查询获取指标的频率(是一个环境变量)

rabbitmq-diagnostics environment | grep collect_statistics_interval

当使用RabbitMQ的管理UI默认5秒自动刷新时,保持默认的 collect_statistics_interval 设置是最佳的。由于这个原因,两个时间间隔默认都是 5000 毫秒(5秒)。

5 配置到 Prometheus

添加如下内容到 prometheus.yml 文件中

scrape_configs:- job_name: 'rabbitmq-exporter'static_configs:- targets:- rabbitmq1-host:15692- rabbitmq2-host:15692- rabbitmq3-host:15692

6 关于聚合指标和每个对象指标

RabbitMQ 可以通过两种模式返回 Prometheus 指标:

  1. 聚合:指标按名称聚合。在输出大小不变的情况下,即使对象数量(例如连接和队列)增加,这种模式的性能开销也较低。

  2. 每个对象:每个对象度量对的单个度量。由于有大量的统计数据发射实体,例如大量的连接和队列,这可能会导致非常大的有效载荷和大量的CPU资源用于串行数据输出。

对于大型部署,指标聚合是一种更可预测且更实用的选项。 它相对于系统中发出度量的对象的数量进行了很好的扩展 (连接、通道、队列、使用者等),保持较小的响应大小和时间。 可以预见的是,它也很容易可视化。

度量聚合的缺点是它会丢失数据保真度。聚合不可能实现每个对象的度量和警报。个别对象度量虽然在某些情况下非常有用,但也很难可视化。考虑一下一张有20万个连接的图表会是什么样子,以及运营商是否能够理解它,以及运维是否能够理解它。

6.1 获取聚合指标 /metrics

默认情况下,RabbitMQ返回此端点上的聚合度量。

如果您希望在/metrics端点上返回每个对象(未聚合)的度量,请将prometheus.return_per_object_metrics设置为true:

# 可能导致产生非常过量的输出,
# 仅适用于具有相对较少的度量发射对象(如连接和队列)的环境
prometheus.return_per_object_metrics = true

6.2 每次请求获取到每个监控指标的监控数据 /metrics/per-object

GET /metrics/per-object

它总是返回所有每个对象的度量,而不管 prometheus.return_per_object_metrics 的值是多少。
因此,您可以保留 prometheus_return_pr_object_metris 的默认值,该值为 false,并在必要时仍然抓取每个对象的指标,通过在Prometheus目标配置中设置metrics_path=/metrics/per-object(有关其他信息,请查看PrometheusDocumentation)。

6.3 请求获取指定某个监控指标的监控数据 /metrics/detailed

如前所述,在具有大量实体的环境中使用每对象度量在计算上非常昂贵。例如,/metrics/per-object返回系统中所有实体的所有度量,即使大多数客户端(如监控工具)没有使用其中的许多度量。

这就是为什么每个对象指标都有一个单独的端点,允许调用者只查询他们需要的指标:

GET /metrics/detailed?vhost=/&vhost=vhost-2&family=queue_coarse_metrics&family=queue_consumer_count

将只返回请求的度量,并忽略(例如)该客户端不感兴趣的所有渠道度量。

支持以下参数:

  • 零个或多个 family 的值: 将

相关文章:

Prometheus-RabbitMQ Exporter

文章目录 一、介绍监控插件两个插件的区别一、 官方插件 rabbitmq_prometheus1 配置 RabbitMQ 集群名称2 授权使用插件2.1 配置文件方式2.2 命令行方式3 监听地址和端口4 RabbitMQ 插件获取指标的频率5 配置到 Prometheus6 关于聚合指标和每个对象指标6.1 获取聚合指标 `/metri…...

flink读取kafka数据存储iceberg

1、说明 使用flink实时的读取kafka的数据,并且实时的存储到iceberg中。好处是可以一边存数据,一边查询数据。当然使用clickhouse也可以实现数据的既存既取。而hive数据既存既读则会有问题。iceberg中数据读写数据都是从快照中开始的,读和写对…...

文章二:分支管理策略 - 分支玩转:Git分支管理实战

开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun 概述 在软件开发中,版本控制是一项至关重要的工作。Git作为目前最受欢迎的分布式版本控制系统&…...

JS dom元素和鼠标位置之间的一系列属性快速参考

clientHeight 获取对象的高度,不计算任何边距、边框、滚动条,但包括该对象的补白。 clientLeft 获取 offsetLeft 属性和客户区域的实际左边之间的距离。 clientTop 获取 offsetTop 属性和客户区域的实际顶端之间的距离。 clie…...

【剑指 Offer 39】数组中超过一半的数字

题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 思考: 方法一:投…...

list.stream.filter,List<List>转换为List

1.filter过滤 返回符合查询条件的集合//过滤所有deviceType为1的List<DeviceWorkTimeEntity> list entities.stream().filter(a -> "1".equals(a.getDeviceType())).toList(); 2.List<List>转换为List 可以使用流(Stream)的flatMap操作 public cl…...

手机里视频太大怎么压缩?压缩教程分享

现在视频文件的体积越来越大了&#xff0c;动不动就是几个GB起步&#xff0c;如果后期再剪辑处理一下&#xff0c;更是会占据更多的设备空间了&#xff0c;还会导致我们传输受到限制&#xff0c;这时候就需要我们对视频进行压缩处理&#xff0c;下面给大家分享几个简单的方法&a…...

Spring-Cloud-Loadblancer详细分析_3

前两篇文章介绍了加载过程&#xff0c;本文从Feign的入口开始分析执行过程&#xff0c;还是从FeignBlockingLoadBalancerClient.execute来入手 public class FeignBlockingLoadBalancerClient implements Client {private static final Log LOG LogFactory.getLog(FeignBlock…...

使用 VScode 开发 ROS 的Python程序(简例)

一、任务介绍 本篇作为ROS学习的第二篇&#xff0c;是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序&#xff0c;输出“Hello&#xff01;”的内容介绍。 首先我们来了解下ROS的文件系统&#xff0c;ROS文件系统级指的是在硬盘上ROS源代码的组织形式&#xff0c;其结构…...

2022年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;双精度浮点数的输入输出 输入一个双精度浮点数&#xff0c;保留8位小数&#xff0c;输出这个浮点数。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 只有一行&#xff0c;一个双精度浮点数。 输出 一行&#xff0c;保留8位小数的浮点数。 样例输…...

HarmonyOS/OpenHarmony应用开发-ArkTSAPI系统能力SystemCapability列表

SysCap&#xff0c;全称SystemCapability&#xff0c;即系统能力&#xff0c;指操作系统中每一个相对独立的特性。 开发者使用某个接口进行开发前&#xff0c;建议先阅读系统能力使用说明&#xff0c;了解Syscap的定义和使用指导。 说明 当前列表枚举出3.1 Beta版本中支持的…...

【01】基础知识:typescript安装及使用,开发工具vscode配置

一、typescript 了解 typeScript 是由微软开发的一款开源的编程语言。 typeScript 是 javascript 的超级&#xff0c;遵循最新的 es6、es5规范。 typeScript 扩展了 javaScript 的语法。 typeScript 更像后端 java、C# 这样的面向对象语言&#xff0c;可以让 js 开发大型企…...

用C++实现的RTS游戏的路径查找算法(A*、JPS、Wall-tracing)

在实时策略&#xff08;RTS&#xff09;游戏中&#xff0c;路径查找是一个关键的问题。游戏中的单位需要能够找到从一个地方到另一个地方的最佳路径。这个问题在计算机科学中被广泛研究&#xff0c;有许多已经存在的算法可以解决这个问题。在本文中&#xff0c;我们将探讨三种在…...

helm 制作应用的离线安装包

helm 制作应用的离线安装包 1、安装helm 到helm下载对应的压缩包&#xff1a;https://github.com/helm/helm/releases 解压&#xff0c;将helm文件cp到/usr/local/bin/ 文件夹下&#xff0c;查看helm版本&#xff1b;不同的k8s对应不同的helm版本&#xff0c;下载时留心注意…...

RN实现混合式开发-内嵌html

介绍 React Native WebView是一个用于在React Native应用中嵌入Web内容的组件。它允许你在应用中显示网页、加载HTML字符串、运行JavaScript代码等。 使用 首先&#xff0c;你需要在你的React Native项目中安装React Native WebView库。可以使用以下命令进行安装&#xff1a;…...

2000-2022年全国各地级市绿色金融指数数据

2000-2022年全国各地级市绿色金融指数数据 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;来源&#xff1a;统计局、科技部、中国人民银行等权威机构网站及各种权威统计年鉴&#xff0c;包括全国及各省市统计年鉴、环境状况公报及一些专业统计年鉴&#xff0c;如 《中国…...

MachineLearningWu_13/P60-P64_Tensorflow

P60-P64的学习目录如下&#xff0c; x.1 TF网络模型实现 以一个简单的TF的分类网络为例&#xff0c;将模型翻译成框架下的语义&#xff0c;即如右侧所表达的。 当然上面对于分类网络的解释是一个简洁的解释&#xff0c;我们来进行更加具象的了解一下。左边是机器学习的三步骤&…...

centos7实现负载均衡

目录 一、基于 CentOS 7 构建 LVS-DR 集群。 1.1 配置lvs负载均衡服务 1.1.1 下载ipvsadm 1.1.2 增加vip 1.1.3 配置ipvsadm 1.2 配置rs1 1.2.1 编写测试页面 1.2.2 手工在RS端绑定VIP、添加路由 1.2.3 抑制arp响应 1.3 配置rs2 1.4 测试 二、配置nginx负载…...

Django笔记之数据库函数之日期函数

日期函数主要介绍两个大类&#xff0c;Extract() 和 Trunc() Extract() 函数作用是提取日期&#xff0c;比如我们可以提取一个日期字段的年份&#xff0c;月份&#xff0c;日等数据 Trunc() 的作用则是截取&#xff0c;比如 2022-06-18 12:12:12&#xff0c;我们可以根据需求…...

系统架构师---开发方法---敏捷开发

目录 前言 极限编程 四大价值观 沟通 简单 反馈 勇气 尊重&#xff1a; 十二个最佳实践 计划游戏 小型发布 隐喻 简单设计 测试先行 重构 结对编程 集体代码所所有制 持续集成 每周工作40小时 现场客户 编码标准 前言 2001年2月&#xff0c;在美国的犹他州…...

在Ubuntu上5分钟玩转NuttX模拟器:不买开发板也能调试你的RTOS应用

在Ubuntu上5分钟玩转NuttX模拟器&#xff1a;不买开发板也能调试你的RTOS应用 对于嵌入式开发者而言&#xff0c;实时操作系统&#xff08;RTOS&#xff09;的学习曲线往往被硬件依赖所抬高。传统开发流程中&#xff0c;一块兼容的开发板、调试器和配套线缆构成了入门的基本门槛…...

远程开发环境突然断连?资深SRE披露VSCode Remote Extension 1.92+版本3个未公开的session保活机制

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;远程开发环境断连现象的典型特征与影响面分析 远程开发环境&#xff08;如 VS Code Remote-SSH、GitHub Codespaces、JetBrains Gateway&#xff09;在企业级协作中日益普及&#xff0c;但其稳定性高度…...

AutoSAR PNC实战:手把手教你配置一个省电的‘局部唤醒’网络(基于AUTOSAR 4.0.3+)

AutoSAR PNC实战&#xff1a;手把手教你配置一个省电的‘局部唤醒’网络&#xff08;基于AUTOSAR 4.0.3&#xff09; 在车载电子系统日益复杂的今天&#xff0c;如何平衡功能丰富性与能耗效率成为工程师面临的核心挑战。想象一下&#xff0c;当车辆熄火停放时&#xff0c;信息娱…...

3步搞定Java智能地址解析:告别混乱的收货地址处理难题

3步搞定Java智能地址解析&#xff1a;告别混乱的收货地址处理难题 【免费下载链接】address-parse Java 版智能解析收货地址 项目地址: https://gitcode.com/gh_mirrors/addr/address-parse 你是否曾经为处理用户输入的混乱收货地址而头疼不已&#xff1f;&#x1f62b;…...

C# Task async/await CancellationToken

C# Task / async/await / CancellationToken 一、Task 1.Task 理解 Task类似于我们去点餐&#xff0c;餐厅给你一张小票&#xff0c;这个小票就是Task。他表示现在还没有饭&#xff0c;以后会有&#xff0c;你可以去逛街&#xff0c;等饭做好&#xff0c;可以凭借小票(Task)…...

vue2 和 vue3 的核心区别

vue2 和 vue3 的核心区别 Vue3 是 Vue2 的重构升级版本&#xff0c;基于全新的架构设计&#xff0c;在性能、开发体验、语法规范、工程化等方面都有质的提升&#xff0c;以下是两者最核心的区别&#xff1a; 一、核心架构与设计理念维度Vue2Vue3源码实现基于 Options API&#…...

2025届毕业生推荐的降重复率方案横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要能够达成切实有效地去把文本里的AIGC也就是人工智能生成内容其可被检测出来的程度给降低下…...

2026年必知!那些便携又好带,让人欲罢不能的青岛特产!

行业痛点分析在青岛特产领域&#xff0c;当前面临着诸多技术挑战。一方面&#xff0c;消费者对特产的品质和安全要求日益提高&#xff0c;然而部分企业在生产过程中难以实现全产业链的严格把控&#xff0c;导致肉食来源不安全、添加剂使用不规范等问题。数据表明&#xff0c;市…...

Midscene.js终极性能调优:如何将自动化脚本速度提升85%

Midscene.js终极性能调优&#xff1a;如何将自动化脚本速度提升85% 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene Midscene.js作为一款先进的AI驱动跨平台自动化…...

为什么92%的开发者VSCode大模型配置失败?——资深架构师曝光4个隐藏配置断点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么92%的开发者VSCode大模型配置失败&#xff1f; VSCode 作为当前最主流的开发编辑器&#xff0c;其大模型插件&#xff08;如 GitHub Copilot、Tabnine、CodeWhisperer 及本地 LLM 接入方案&#…...