news 2026/6/10 17:12:15

RocketMQ 监控与告警:Prometheus + Grafana 可视化监控搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RocketMQ 监控与告警:Prometheus + Grafana 可视化监控搭建

在分布式消息中间件的生产实践中,“看得见”才能“控得住”。RocketMQ作为阿里开源的高性能消息队列,其运行状态直接影响业务链路的稳定性。本文将聚焦RocketMQ监控体系的核心搭建方案——基于Prometheus采集指标、Grafana可视化展示,带你从零构建一套“可观测、可告警”的监控系统,为消息队列的稳定运行保驾护航。

一、监控核心目标:为什么需要监控RocketMQ?

在落地监控方案前,我们先明确核心需求:RocketMQ的监控并非“炫技”,而是为了解决生产环境中的实际问题。其核心目标包括:

  • 故障早发现:提前感知Broker宕机、NameServer失联、消息堆积等异常,避免问题扩散至业务层;

  • 性能可追踪:监控消息发送/消费延迟、吞吐量、存储占用等指标,为性能优化提供数据支撑;

  • 问题可定位:当业务出现“消息发送失败”“消费阻塞”等问题时,通过监控数据快速定位根因(如Broker磁盘满、网络延迟高等);

  • 容量可规划:基于历史监控数据,预测存储、带宽等资源的扩容需求,避免资源瓶颈。

而Prometheus的“时序数据采集+灵活查询”与Grafana的“高可定制化可视化”,恰好完美匹配这些需求,成为RocketMQ监控的主流组合。

二、环境准备:核心组件与依赖说明

本次搭建基于Linux环境(以CentOS 7为例),需提前准备以下组件,建议统一规划安装路径(如/usr/local/monitor/),便于后续维护:

组件版本建议核心作用依赖条件
RocketMQ4.9.x及以上待监控的消息队列服务JDK 1.8+、内存≥4G
Prometheus2.30.x及以上时序数据采集与存储无特殊依赖,端口9090需开放
Grafana8.0.x及以上监控指标可视化展示端口3000需开放,依赖Prometheus数据源
RocketMQ Exporter0.0.2+将RocketMQ指标转换为Prometheus格式与RocketMQ版本兼容,JDK 1.8+

注意:RocketMQ Exporter是连接RocketMQ与Prometheus的关键桥梁,需确保其版本与RocketMQ匹配(如RocketMQ 4.9.x对应Exporter 0.0.2及以上),避免指标采集失败。

三、分步搭建:从组件部署到监控生效

整个搭建流程遵循“指标暴露→数据采集→可视化展示”的逻辑,依次完成RocketMQ指标配置、Exporter部署、Prometheus采集、Grafana图表配置四个核心步骤。

步骤1:配置RocketMQ,开放监控指标

RocketMQ自身已内置监控指标(如消息数、延迟、存储大小等),需通过配置文件开启指标暴露功能,供Exporter采集:

  1. 修改Broker配置文件:进入RocketMQ的conf目录,编辑broker.conf(或自定义配置文件),添加以下配置:
    `# 开启监控指标暴露
    enablePropertyFilter=true

配置Exporter可访问的IP(建议为0.0.0.0,允许跨节点访问)

brokerIP1=你的Broker实际IP

监控数据采样间隔(默认60秒,可根据需求调整)

monitorInterval=60`

  1. 重启Broker服务:使配置生效,命令如下:
    `# 停止Broker
    sh ${ROCKETMQ_HOME}/bin/mqshutdown broker

启动Broker(指定配置文件)

nohup sh ${ROCKETMQ_HOME}/bin/mqbroker -c ${ROCKETMQ_HOME}/conf/broker.conf `&

  1. 验证指标可用性:RocketMQ的指标通过内部接口暴露,可通过以下命令简单验证(需替换为实际IP):
    curl http://BrokerIP:10911/metrics若返回包含“rocketmq_”前缀的指标数据,则说明RocketMQ指标已正常暴露。

步骤2:部署RocketMQ Exporter,转换指标格式

RocketMQ的原生指标格式不支持Prometheus直接采集,需通过Exporter将其转换为Prometheus兼容的格式(如文本格式):

  1. 下载Exporter:可从GitHub(https://github.com/apache/rocketmq-exporter)下载编译后的jar包,或通过源码编译:
    # 源码编译(需Maven环境) git clone https://github.com/apache/rocketmq-exporter.git cd rocketmq-exporter mvn clean package -DskipTests
    编译完成后,jar包位于target目录下,如rocketmq-exporter-0.0.2.jar。

  2. 启动Exporter:通过命令指定RocketMQ的NameServer地址(核心配置),并后台运行:
    nohup java -jar rocketmq-exporter-0.0.2.jar \ --rocketmq.config.namesrvAddr=NameServerIP:9876 \ --server.port=8080&
    关键参数说明:

    • rocketmq.config.namesrvAddr:NameServer的地址(多个以逗号分隔),Exporter通过该地址获取Broker列表;

    • server.port:Exporter的端口(默认8080,需确保未被占用)。

  3. 验证Exporter:访问Exporter的指标接口,若返回Prometheus格式的指标,则部署成功:
    curl http://ExporterIP:8080/actuator/prometheus
    成功时会看到类似“rocketmq_broker_message_count 1000.0”的指标数据。

步骤3:配置Prometheus,采集指标数据

Prometheus的核心功能是“定时采集目标服务的指标数据并存储”,需通过配置文件指定采集Exporter的指标:

  1. 安装Prometheus:从官网(https://prometheus.io/download/)下载对应版本的压缩包,解压后部署:
    # 下载并解压 wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz tar -zxvf prometheus-2.45.0.linux-amd64.tar.gz -C /usr/local/monitor/ cd /usr/local/monitor/prometheus-2.45.0.linux-amd64

  2. 修改Prometheus配置文件:编辑prometheus.yml,在scrape_configs节点下添加RocketMQ Exporter的采集配置:
    `global:
    scrape_interval: 15s # 全局采集间隔,默认15秒
    evaluation_interval: 15s # 规则评估间隔

rule_files:

后续告警规则文件路径,暂留空

scrape_configs:

  • job_name: ‘prometheus’
    static_configs:
    • targets: [‘localhost:9090’] # 监控Prometheus自身

新增RocketMQ监控任务

  • job_name: ‘rocketmq’
    static_configs:
    • targets: [‘ExporterIP:8080’] # Exporter的地址和端口
      scrape_interval: 10s # 针对RocketMQ的采集间隔,可缩短至10秒`配置说明:scrape_interval越小,指标更新越及时,但会增加Prometheus的存储压力,建议根据业务重要性调整。
  1. 启动Prometheus:后台启动Prometheus服务,并指定配置文件:
    nohup ./prometheus --config.file=prometheus.yml&

  2. 验证采集状态:访问Prometheus的Web界面(http://PrometheusIP:9090),进入“Status→Targets”页面,若“rocketmq”任务的State为“UP”,则指标采集正常。同时可在“Graph”页面查询RocketMQ指标(如输入rocketmq_broker_message_count),验证数据是否存在。

步骤4:配置Grafana,实现可视化监控

Prometheus的可视化能力较弱,Grafana可通过拖拽方式快速构建美观、直观的监控面板,且支持RocketMQ的预制模板,无需从零绘制图表:

  1. 安装Grafana:通过yum命令安装(CentOS环境),或下载压缩包部署:
    `# 配置Grafana源
    cat > /etc/yum.repos.d/grafana.repo << EOF
    [grafana]
    name=grafana
    baseurl=https://packages.grafana.com/oss/rpm
    repo_gpgcheck=1
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.grafana.com/gpg.key
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    EOF

安装并启动

yum install grafana -y
systemctl start grafana-server
systemctl enable grafana-server # 设置开机自启`

  1. 初始化Grafana:访问Grafana Web界面(http://GrafanaIP:3000),默认用户名/密码为admin/admin,首次登录需修改密码。

  2. 添加Prometheus数据源

    • 点击左侧“Configuration→Data Sources”,点击“Add data source”,选择“Prometheus”;

    • 在“HTTP”部分,填写Prometheus的地址(如http://PrometheusIP:9090);

    • 拉至页面底部,点击“Save & Test”,若提示“Data source is working”,则配置成功。

  3. 导入RocketMQ监控模板:Grafana社区提供了大量预制模板,可直接导入使用,避免重复劳动:

    • 点击左侧“Create→Import”,在“Import via grafana.com”输入模板ID(推荐使用7674或14644,均为RocketMQ专属模板,可在Grafana官网模板库搜索确认);

    • 选择已添加的Prometheus数据源,点击“Import”,即可生成完整的RocketMQ监控面板。

  4. 自定义监控面板(可选):若预制模板无法满足需求,可手动添加图表。例如,添加“消息发送延迟”图表:

    • 点击面板“Add panel→Add visualization”,选择Prometheus数据源;

    • 在“Query”中输入指标查询语句:rocketmq_producer_send_delay_ms_avg

    • 设置图表标题、单位(毫秒)、颜色等样式,点击“Apply”保存。

导入模板后,监控面板会展示Broker状态、消息收发吞吐量、消息延迟、存储占用等核心指标,实现“一站式”可视化监控。

四、关键优化:告警配置与监控进阶

监控的核心价值不仅是“可视化”,更在于“异常告警”。通过Prometheus配置告警规则,结合Grafana或Alertmanager实现告警推送,确保问题第一时间触达运维人员。

1. 配置Prometheus告警规则

  1. 创建告警规则文件:在Prometheus目录下新建rocketmq_alerts.yml,添加核心告警规则(示例):
    `groups:
  • name: rocketmq_alerts
    rules:

    Broker宕机告警

    • alert: RocketMQBrokerDown
      expr: rocketmq_broker_running{status=“Running”} == 0
      for: 1m # 持续1分钟触发告警
      labels:
      severity: critical # 告警级别:紧急
      annotations:
      summary: “RocketMQ Broker宕机”
      description: “Broker {{ $labels.brokerName }} 已停止运行,持续时间超过1分钟,请立即排查。”

    消息堆积告警(消费滞后超过1000条)

    • alert: RocketMQMessageBacklog
      expr: rocketmq_consumer_offset_diff > 1000
      for: 5m
      labels:
      severity: warning # 告警级别:警告
      annotations:
      summary: “RocketMQ消息堆积”
      description: “消费者组 {{ $labels.consumerGroup }} 在主题 {{ $labels.topic }} 上的消息堆积数为 {{ $value }},超过阈值1000,请检查消费能力。”

    消息发送失败率告警(失败率超过5%)

    • alert: RocketMQProducerErrorRate
      expr: rocketmq_producer_send_fail_total / rocketmq_producer_send_total > 0.05
      for: 2m
      labels:
      severity: critical
      annotations:
      summary: “RocketMQ消息发送失败率过高”
      description: “生产者发送消息失败率为 {{ $value | humanizePercentage }},超过阈值5%,请检查Broker状态或网络连接。”`
  1. 关联规则文件到Prometheus配置:修改prometheus.yml,在rule_files节点添加规则文件路径:
    `rule_files:
  • “rocketmq_alerts.yml”`
  1. 重启Prometheus:使告警规则生效,命令如下:
    pkill prometheus nohup ./prometheus --config.file=prometheus.yml&

2. 配置告警推送(以Grafana为例)

Grafana支持将告警推送到邮件、钉钉、企业微信等渠道,以钉钉为例配置步骤:

  1. 在钉钉群创建“自定义机器人”,获取Webhook地址;

  2. 在Grafana中,点击左侧“Alerting→Contact points”,点击“Add contact point”;

  3. 选择“DingDing”作为Contact type,填写Webhook地址、机器人名称,点击“Test”验证推送;

  4. 在监控面板中,对需要告警的图表配置“Alert”规则,关联已创建的Contact point,完成告警链路配置。

五、常见问题与排错指南

搭建过程中可能遇到指标采集失败、图表无数据等问题,以下是高频问题的解决方法:

  • 问题1:Prometheus的rocketmq任务状态为DOWN排查方向:① 检查Exporter是否正常运行(ps -ef | grep rocketmq-exporter);② 验证Exporter的指标接口是否可访问(curl命令);③ 确认Prometheus与Exporter之间网络通畅(telnet ExporterIP 8080)。

  • 问题2:Grafana图表无数据,但Prometheus可查询到指标排查方向:① 确认Grafana的数据源配置正确(Prometheus地址无误);② 检查图表的时间范围是否合理(如选择“Last 5 minutes”);③ 验证指标查询语句是否与Prometheus中的一致。

  • 问题3:Exporter无法获取Broker指标排查方向:① 确认Exporter启动时指定的NameServer地址正确;② 检查Broker的brokerIP1配置是否为外部可访问的IP(而非127.0.0.1);③ 验证RocketMQ的10911端口是否开放。

六、总结与展望

本文通过“RocketMQ指标暴露→Exporter转换→Prometheus采集→Grafana可视化”的完整链路,搭建了一套生产级的RocketMQ监控系统。核心亮点在于:借助Exporter实现指标格式兼容,利用Prometheus的时序数据能力保障采集稳定性,通过Grafana的模板化降低可视化成本,最终结合告警规则实现“监控-告警-排查”的闭环。

后续可基于此体系进行进阶优化,例如:通过Alertmanager实现更灵活的告警路由(如按级别推送至不同人员)、结合Prometheus的远程存储(如Thanos)实现监控数据的长期留存与多集群聚合,进一步提升监控体系的可靠性与扩展性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 1:16:19

RocketMQ 消费者消费堆积问题:原因分析、排查步骤与解决方案

在基于 RocketMQ 构建的消息驱动架构中&#xff0c;“消费堆积”无疑是开发者最常遭遇且需紧急处理的问题之一。当消息生产者的发送速率持续超过消费者的处理速率&#xff0c;或者消费者因各类异常停止消费时&#xff0c;大量消息会积压在 Broker 中&#xff0c;不仅可能导致业…

作者头像 李华
网站建设 2026/6/10 2:46:33

范式战争:从PIN、IPRAN到算力网络——一部承载网的思想简史

引言&#xff1a;被遗忘的奠基者与被误解的革命者在网络世界的喧嚣中&#xff0c;有两种技术静静地支撑着每一次视频通话、每一笔移动支付、每一刻互联网体验。它们是PIN与IPRAN——前者如古典建筑的承重墙&#xff0c;严谨而可靠&#xff1b;后者如现代建筑的钢结构&#xff0…

作者头像 李华
网站建设 2026/6/10 10:54:12

KaLM-Embedding-V2.5:0.5B参数的轻量级嵌入革命

KaLM-Embedding-V2.5&#xff1a;0.5B参数的轻量级嵌入革命 ——基于PyTorch-CUDA基础镜像的高效部署实践 在AI模型越做越大的今天&#xff0c;有没有可能反其道而行之&#xff1f;不是堆叠千亿参数&#xff0c;而是用不到1%的体量&#xff0c;实现接近专业级语义理解的能力&am…

作者头像 李华
网站建设 2026/6/10 14:37:16

Dify开源LLM应用开发平台部署与使用指南

Dify 开源 LLM 应用开发平台部署与使用指南 在生成式 AI 技术快速落地的今天&#xff0c;越来越多团队希望将大模型能力嵌入业务流程——无论是智能客服、知识问答&#xff0c;还是自动化内容生成。但直接调用 API 写代码&#xff0c;往往面临维护成本高、Prompt 难管理、迭代…

作者头像 李华
网站建设 2026/6/10 9:34:44

景杰生物第五届生信研修班圆满落幕!引领技术协同创新,推动精准医学产业化进程

2025年9月19日&#xff0c;由杭州景杰生物科技股份有限公司主办的“智启未来&#xff1a;AI赋能蛋白组学与生信高级研修班”在杭州顺利闭幕。本次研修班以“蛋白质组学前沿热点分享”“AI在蛋白质组学及生信中的前沿应用”为核心内容&#xff0c;来自北京大学、复旦大学、浙江大…

作者头像 李华