ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

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),仅供参考
返回列表