首页/新闻资讯/正文详情

rabbitmq-server 仓库内 RabbitMQ Grafana 监控面板的开发、验证与发布全流程指南

发布时间:2026/9/23 6:00:58 来源:云帆数科 栏目:资讯中心
rabbitmq-server 仓库内 RabbitMQ Grafana 监控面板的开发、验证与发布全流程指南
后端消息队列消息路由【免费下载链接】rabbitmq-serverOpen source RabbitMQ: core server and tier 1 (built-in) plugins项目地址https://gitcode.com/gh_mirrors/ra/rabbitmq-server点击查看免费下载本指南基于 rabbitmq-server 仓库中 deps/rabbitmq_prometheus/docker/grafana/README.md 展开完整介绍 RabbitMQ 官方 Grafana 监控面板的本地开发环境搭建、面板创建/修改/导出、跨 Grafana 版本兼容性验证以及最终发布到 grafana.com 的标准化工作流。读者按本文操作即可复现 RabbitMQ 核心团队维护面板的整套流程并掌握仓库中 Prometheus 指标端点与面板数据源之间的对应关系。图仓库 publish 目录中保存的 RabbitMQ-Overview 面板运行截图是新建面板时必须产出的交付物之一。一、Grafana 面板在仓库中的位置与组成RabbitMQ 的官方 Grafana 面板随源码一同维护在rabbitmq_prometheus插件的 docker/grafana/ 目录下整体分为三部分面板 JSON 文件存放于 dashboards/当前包含 10 个面板RabbitMQ-Overview.json集群总览Erlang-BEAM.json、Erlang-Distribution.json、Erlang-Distributions-Compare.json、Erlang-Memory-Allocators.jsonErlang 虚拟机与分布式层RabbitMQ-PerfTest.json性能压测RabbitMQ-Quorum-Queues-Raft.json仲裁队列 Raft 层RabbitMQ-Stream.json流队列inet_tcp_metrics.json、rabbitmq-exporter_vs_rabbitmq-prometheus.jsonTCP 连接指标与新旧 exporter 对比发布配套文档存放于 publish/每个面板对应一篇*.md描述如 rabbitmq-overview-10991.md、erlang-distribution-11352.md以及一组面板运行截图。Grafana 自动配置provisioning文件dashboards.yml 声明从/dashboards目录加载面板 JSONdatasources.yml 注册名为prometheus、地址为http://prometheus:9090的默认数据源。这些面板全部依赖rabbitmq_prometheus内置插件RabbitMQ 3.8.0 起随发行版内置需先执行rabbitmq-plugins enable rabbitmq_prometheus启用默认指标端口为15692端点路径为/metrics。二、一条命令拉起完整开发环境make overview metrics在rabbitmq_prometheus目录下执行make overview metrics该命令会通过 docker-compose 启动一整套 Prometheus Grafana 开发栈并附带模拟工作负载让面板以非零指标的鲜活状态呈现便于直观验证面板各 Panel 是否正常出图。两条目标分别对应make overview使用 docker-compose-overview.yml 启动 3 节点 RabbitMQ 集群与多路 PerfTest 压测负载make metrics使用 docker-compose-metrics.yml 启动 Grafana、Prometheus、node-exporter 与 cadvisor。从 Makefile 可以看到这些目标的具体行为RUN ? up --detach docker-compose --file $(F) logs --follow DOCKER_COMPOSE_FILES : $(wildcard docker/docker-compose-*.yml) $(DOCKER_COMPOSE_FILES): cd docker docker compose --file $(F) $(RUN) ; true .PHONY: down down: RUN down down: $(DOCKER_COMPOSE_FILES) # Stop all containers .PHONY: metrics metrics: # Run all metrics containers: Grafana, Prometheus friends $(DOCKER_COMPOSE_UP) .PHONY: overview overview: # Make RabbitMQ Overview panels come alive $(DOCKER_COMPOSE_UP)即up --detach后台拉起容器后自动logs --follow跟随日志输出按CtrlC仅退出日志跟随容器保持运行。环境不再需要时用以下命令一键拆除全部容器make downmake down会遍历docker/docker-compose-*.yml下所有 compose 文件逐个执行down确保把overview、metrics等场景的容器全部停掉。环境启动后浏览器访问http://localhost:3000使用默认凭据admin / admin登录 Grafana首次登录会提示修改密码Prometheus 控制台位于http://localhost:9090各 RabbitMQ 节点管理界面与15692指标端口按 compose 文件中的端口映射对外暴露如 overview 场景下rmq0:15673/15693、rmq1:15674/15694、rmq2:15675/15695。三、理解 docker-compose 开发栈的组成3.1 metrics 场景Grafana Prometheus 系统指标采集docker-compose-metrics.yml 包含四个服务服务镜像作用grafanagrafana/grafana:8.3.4面板宿主端口3000prometheusprom/prometheus:v2.53.3指标时序存储端口9090挂载 prometheus.ymlnode-exporterprom/node-exporter:v1.2.0主机级指标CPU、内存、磁盘、网络cadvisorgcr.io/cadvisor/cadvisor容器级资源指标Grafana 容器通过三个卷完成自动化配置volumes: - rabbitmq-prometheus_grafana:/var/lib/grafana - ./grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/rabbitmq.yaml - ./grafana/datasources.yml:/etc/grafana/provisioning/datasources/prometheus.yaml - ./grafana/dashboards:/dashboardsdashboards.yml与datasources.yml写入 Grafana 标准 provisioning 目录容器启动即自动注册数据源与加载面板无需手工导入./grafana/dashboards挂载到容器内/dashboards正是 dashboards.yml 中options.path: /dashboards所指的面板加载目录同时通过GF_INSTALL_PLUGINS预装两个面板插件flant-statusmap-panel状态地图与grafana-piechart-panel饼图说明现有面板如 RabbitMQ-Overview 的节点状态视图依赖这些社区插件。3.2 Prometheus 抓取配置与指标端点prometheus.yml 中scrape_interval: 15s抓取目标覆盖rabbitmq-server各场景全部节点的15692端口/metrics聚合端点rabbitmq-server-detailed请求/metrics/detailed并按familyqueue_coarse_metrics过滤rabbitmq-perf-test各 PerfTest 负载容器自带的8080指标端口rabbitmq-exporter用于对比展示新旧 exporter 指标的独立抓取任务。3.3 模拟负载让面板活起来docker-compose-overview.yml 除了 3 节点 RabbitMQ 集群rabbitmq:4-management镜像构成rmq0/rmq1/rmq2还定义了多种 PerfTest 负载容器每种负载针对一个面板指标族basic-get/basic-get-auto轮询polling获取消息配合VARIABLE_RATE模拟变化速率greedy-consumer高 QOS2000抢占式消费制造大量未确认消息publisher-confirms开启发布确认CONFIRM: 1与变化速率slow-consumer-persistent持久化消息 慢消费者 x-max-length队列nack批量拒绝NACK制造 redelivered 指标unroutable-return/unroutable-dropmandatory标志产生 returned/dropped 指标stream以rabbitmq-stream://协议持续压测流队列。这套负载设计直接对应 RabbitMQ-Overview 面板展示的published / confirmed / returned / dropped / delivered / redelivered等消息速率面板是面板调试时指标非零的来源。此外 docker-compose-qq.yml仲裁队列 Raft 面板、docker-compose-dist-tls.ymlErlang 分布式 TLS 面板分别承载各自场景的压测负载与多节点集群。四、在 Grafana UI 中创建或更新面板并导出环境就绪后登录localhost:3000admin / admin即可在 Grafana UI 中开始创建或更新面板。4.1 编辑与导出步骤打开目标面板provisioning 已自动加载仓库内的 JSON进入编辑模式修改 Panel、Row、变量或告警阈值修改完成后点击面板名称旁的下拉菜单Dashboard settings / Share进入Share菜单切换到Export标签页务必勾选Export for sharing externally外部共享导出将导出的面板 JSON 保存为文件或点击 View JSON 后整体复制覆盖回仓库对应的 dashboards/ 目录中的 JSON 文件。勾选 Export for sharing externally 是关键一步它会让导出的 JSON 携带数据源引用等元信息确保面板在其他实例包括 grafana.com 与最终用户环境上可直接复用。4.2 为什么是 JSON 入库而非截图仓库以 JSON 文件作为面板的唯一事实来源single source of truth。grafana.com 上的发布版本、PR 评审、以及用户自建 Grafana 实例导入全部基于这些 JSON 生成因此任何 UI 改动最终都必须落回 JSON 文件保持仓库与线上一致。五、跨 Grafana 版本的兼容性验证RabbitMQ 面板面向广大用户必须兼容多个 Grafana 大版本。README 规定完成面板改动后必须验证其在不同 Grafana 版本下的表现。验证方法如下编辑 docker-compose-metrics.yml 中的services.grafana.image例如将grafana/grafana:8.3.4改为目标版本镜像执行make metrics重新构建并启动 Grafana 服务器检查面板在新版本下是否正常渲染、Panel 是否报错尤其是依赖社区插件的 Panel如状态地图、饼图官方要求在公开可用的最新 Grafana 版本上同样测试通过后才算完成验证。这一步骤保证了 JSON 中panels[].type与插件兼容性声明不随 Grafana 升级而失效是面板合入前的强制关卡。六、新建面板所需的配套交付物如果是新建一个面板而非修改既有面板除 JSON 文件外还必须补齐以下配套文件参见 publish/ 目录面板描述文档*.md在./publish/下新增一篇 Markdown用于 grafana.com 的 README 展示。可参考 erlang-distribution-11352.md 的写法——它包含一句话定位如 Erlang Distribution links, inet socket, port driver, dist process tls_connection tls_senderCategories分类如RabbitMQREADME面板用途说明、展示的指标清单分条目列出如 Distribution link 的 State / Data buffered / Data sent per second 等、支持的过滤维度Filter by如 RabbitMQ Cluster、Process type、依赖插件说明与官方文档链接。面板运行截图保存到./publish/作为 grafana.com 页面与 PR 评审的可视化证据如rabbitmq-overview-2019-10-21.png这类带日期命名的截图。这两类交付物与 JSON 一同组成一个新面板 PR的完整变更集。七、提交 PR 并在 grafana.com 上发布7.1 合入仓库完成上述修改后在rabbitmq-server仓库中创建 Pull Request将面板 JSON、描述文档、截图一并提交。PR 评审通过并合入后改动即成为仓库正式内容。7.2 发布到 grafana.com仓库合入只是第一步面向用户的面板还需要发布到 grafana.comGrafanaLabs官方机构账户仅有 RabbitMQ 团队权限的成员可访问官方机构面板管理页https://grafana.com/orgs/rabbitmq/dashboards使用团队凭据登录PR 合入后从 dashboards/ 下已合入的 JSON 出发若面板已存在基于新 JSON 创建该面板的一个新 revision修订版本若面板不存在基于 JSON新建面板发布后用户即可在 grafana.com 上搜索到该面板一键导入自己的 Grafana 实例。注意发布流程明确以合入仓库的 JSON为唯一数据源避免手工维护两处副本导致漂移。八、面板背后的数据源rabbitmq_prometheus 指标端点理解面板开发还需掌握其数据来源。rabbitmq_prometheus插件详见 deps/rabbitmq_prometheus/README.md默认在15692端口暴露三个端点端点说明/metrics默认聚合指标prometheus.return_per_object_metrics false默认值指标前缀rabbitmq_/metrics/per-object未聚合的逐对象指标开销大80k 队列节点曾测得返回 190 万指标、98MB 响应体、耗时 58 秒/metrics/detailed按需选择性查询前缀rabbitmq_detailed_支持family指标族与vhost虚拟主机过滤参数可与/metrics并存互不影响面板开发与这组端点的关系官方面板如 RabbitMQ-Overview、Erlang-Distribution均基于聚合端点/metrics设计避免对集群造成压力调试阶段若需观察某个具体对象的原始指标可用curl http://localhost:15692/metrics/per-object或curl http://localhost:15692/metrics/detailed?familyqueue_coarse_metricsfamilyqueue_consumer_count验证指标名与 label 是否与面板查询表达式匹配无需重启即可在聚合/逐对象间切换rabbitmqctl eval application:set_env(rabbitmq_prometheus, return_per_object_metrics, true).。九、开发环境的配置要点与调优9.1 rabbitmq.conf 关键项overview 场景的节点配置见 rabbitmq-overview.conf其中的注释说明了面板开发相关的两个关键配置# Increase the 5s default so that we are below Prometheus scrape interval, # but still refresh in time for Prometheus scrape # This is linked to Prometheus scrape interval range used with rate() collect_statistics_interval 10000collect_statistics_interval 10000RabbitMQ 默认 5s 采集一次统计这里提高到 10s保证指标刷新周期落在 Prometheusscrape_interval: 15s之内prometheus.yml 顶部注释特别强调这一联动关系并指出该值决定了rate()函数使用的窗口范围prometheus.return_per_object_metrics true默认注释开启后/metrics直接返回逐对象指标仅用于调试生产环境不建议开启其余项loopback_users.guest false、load_definitions加载预置队列定义、cluster_formation.*静态组网 3 节点、vm_memory_high_watermark.absolute 768MiB模拟内存水位告警场景。9.2 指标采集与面板联调由于 dev 栈中 Grafana、Prometheus、RabbitMQ 通过 docker 网络互联rabbitmq-prometheus网络面板查询可直接使用jobrabbitmq-server、instancermq0:15692等 label 过滤。调试新 Panel 时建议按Prometheus 查询页验证表达式 → 面板复制表达式 → 检查出图的顺序推进可显著减少在 UI 中反复试错的时间。十、总结面板维护的标准工作流将 README 的流程整理为可执行清单make overview metrics启动含模拟负载的完整 dev 栈登录localhost:3000admin/admin在 UI 中创建或修改面板通过 Share → Export勾选Export for sharing externally将 JSON 落回 dashboards/编辑services.grafana.image并在make metrics下验证多个 Grafana 版本含最新版新建面板时补齐 publish/ 下的描述文档与截图提交 PR 合入仓库由团队成员在 grafana.com 机构账户下基于合入的 JSON 创建新 revision 或新面板。这套流程把UI 可视化编辑、JSON 版本化、多版本兼容验证、官方渠道发布串成闭环既保证了面板质量也让面板 JSON 与仓库源码、测试负载、发布文档保持完全一致值得作为监控面板类项目长期维护的参考范式。延伸阅读deps/rabbitmq_prometheus/docker/grafana/README.md本文依据的原始文档deps/rabbitmq_prometheus/Makefileoverview/metrics/dist-tls/qq/dist-metrics/down等全部开发目标deps/rabbitmq_prometheus/docker/docker-compose-metrics.yml 与 docker-compose-overview.ymldev 栈与模拟负载定义deps/rabbitmq_prometheus/docker/prometheus.yml抓取任务与指标端点deps/rabbitmq_prometheus/docker/grafana/dashboards/全部面板 JSONdeps/rabbitmq_prometheus/docker/grafana/publish/面板描述文档与截图deps/rabbitmq_prometheus/README.md插件配置项与指标端点说明赞分享后端消息队列消息路由【免费下载链接】rabbitmq-serverOpen source RabbitMQ: core server and tier 1 (built-in) plugins项目地址https://gitcode.com/gh_mirrors/ra/rabbitmq-server点击查看免费下载相关推荐RabbitMQ 服务器源码贡献与测试实战指南基于 rabbitmq-server 仓库的开发工作流RabbitMQ 服务器源码贡献与测试实战指南基于 rabbitmq server 仓库的开发工作流 导读 本文以 RabbitMQ 开源仓库rabbitm后端消息队列消息路由RabbitMQ Erlang 内存分配器监控基于 rabbitmq-prometheus 与 Grafana 的 Erlang VM 内存全景分析RabbitMQ Erlang 内存分配器监控基于 rabbitmq prometheus 与 Grafana 的 Erlang VM 内存全景分析 本文围绕后端消息队列消息路由spotDL 完全指南3 步免费把 Spotify 音乐下载到本地spotDL 完全指南3 步免费把 Spotify 音乐下载到本地 Spotify 里常听的歌突然下架、出差路上没有网络信号这两种情况指向同一个解法把音乐后端消息队列消息路由创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

校园午休课桌椅安全隐患分析与安全选购指南
校园午休课桌椅安全隐患分析与安全选购指南

1. 午休课桌椅安全隐患概述午休课桌椅作为校园基础设施的重要组成部分,其安全性直接关系到学生的身心健康。在多年的教育装备评测工作中,我发现很多学校在采购午休课桌椅时往往更关注价格和外观,而忽视了潜在的安全隐患。事实上,不… · 2026/9/23 6:00:45

游窝网图解原理:3步搞定跨省转介与报名避坑
游窝网图解原理:3步搞定跨省转介与报名避坑

游窝网图解原理:3步搞定跨省转介与报名避坑 看了一堆教程还是不会写项目?别慌,这种“懂代码不会用”的尴尬,在技术圈太常见了。很多人对着屏幕发呆,觉得逻辑懂了,手一敲就报错。其实,这就像你背熟了菜谱,但没进过厨房,不知道火候怎么掌握。今天咱们… · 2026/9/23 6:00:39

高效网址导航页构建指南:分类体系与配置驱动方案详解
高效网址导航页构建指南:分类体系与配置驱动方案详解

1. 网址导航这事,看着简单做起来全是坑做“网址大全”这个项目,很多人第一反应是:不就是把一堆链接堆在页面上吗?我一开始也这么想,直到自己动手整理才发现,这里面藏着的门道远远超过预期。先说这个项目到底… · 2026/9/23 6:00:33

2017百度世界大会实战项目最佳实践指南
2017百度世界大会实战项目最佳实践指南

2017百度世界大会实战项目最佳实践指南 配置环境就卡半天,是不是你的常态?别急,这套2017百度世界大会实战项目的最佳实践能帮你彻底摆脱依赖地狱。 项目目标… · 2026/9/23 8:36:34

Wind金融终端实操指南:从基础操作到Python接口的高效工作流
Wind金融终端实操指南:从基础操作到Python接口的高效工作流

开篇:为什么金融研究生的第一课,不是计量经济学,而是打开Wind如果你在券商、基金、银行或者任何一家正经的金融机构实习过,大概率会有这样的经历:带教老师丢给你一个任务——“把这个行业近五年的财务数据拉下来”&… · 2026/9/23 8:36:28

3类高清截图软件手写实现对比:解决项目搭建难
3类高清截图软件手写实现对比:解决项目搭建难

3类高清截图软件手写实现对比:解决项目搭建难 学会语法却不知怎么搭项目,这是很多开发者卡在从入门到精通路上的最大坎。尤其是涉及前端渲染、后端图像处理或跨平台工具开发时,想要 手写实现 一个稳定且 高清 的截图功能,光看文档根本不够。你盯着… · 2026/9/23 8:36:28

3步搞定november怎么读:一文搞懂发音原理与代码验证
3步搞定november怎么读:一文搞懂发音原理与代码验证

3步搞定november怎么读:一文搞懂发音原理与代码验证 面试被问原理答不上来,真的会当场社死。特别是当面试官轻飘飘问一句“november怎么读”,你心里默念“诺纹伯”,结果张嘴变成“诺温伯”,瞬间尴尬。别慌,今天这篇文章不玩虚的,咱们… · 2026/9/23 8:36:28

Python配置验证最佳实践:Pydantic详解与应用
Python配置验证最佳实践:Pydantic详解与应用

1. 为什么我们需要更好的配置验证方案在开发过程中,处理配置文件是每个工程师都会遇到的常规任务。从简单的JSON/YAML文件到复杂的环境变量管理,配置数据验证一直是个容易被忽视但又极其重要的问题。我见过太多项目因为配置验证不严谨导致的线上事故&… · 2026/9/23 8:36:22

C# WPF在MES系统中的架构设计与性能优化实践
C# WPF在MES系统中的架构设计与性能优化实践

1. 项目概述:基于C# WPF的大型MES系统架构解析这套MES系统是我在汽车零部件行业实施的一个典型工业级解决方案,采用WPF作为前端展示框架,后端整合了SCADA数据采集、实时看板、多产品线管理等核心功能。系统需要处理来自17条产线、200台设备的… · 2026/9/23 8:36:15

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码