尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Prometheus 监控 ActiveMQ 全栈实战:从队列深度到消费者延迟的实时可观测性
Prometheus 监控 ActiveMQ 全栈实战从队列深度到消费者延迟的实时可观测性ActiveMQ 是 Java 消息中间件的元老至今仍被大量企业用于异步通信。其队列堆积、消费者数量、内存与存储使用、消息入队/出队速率以及连接数等指标直接关系到系统的可用性和性能。Prometheus 根据 ActiveMQ 版本提供不同的监控方案ActiveMQ Classic (5.x)通过JMX Exporter暴露指标而ActiveMQ Artemis (2.x)则内置了优雅的 Prometheus 插件。本文将覆盖两种主流架构带你从零实现 ActiveMQ 的全维度可观测。1. 方案选型JMX Exporter vs Artemis 内置插件ActiveMQ 版本监控方式特点ActiveMQ Classic (5.x)使用jmx_prometheus_javaagent随 JVM 启动抓取 JMX MBean灵活可定制但需编写 YAML 规则适用于所有 5.x 版本ActiveMQ Artemis (2.x)内置metrics插件直接暴露/metrics端点官方支持开箱即用指标丰富强烈推荐建议如果是 Artemis直接使用内置插件如果还在 Classic采用 JMX Exporter。下文将分别给出配置。2. 监控 ActiveMQ Classic (5.x) 使用 JMX Exporter2.1 下载并配置 JMX 代理在 ActiveMQ 服务器上下载jmx_prometheus_javaagentwgethttps://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jarsudomkdir/opt/activemq/prometheussudomvjmx_prometheus_javaagent-0.20.0.jar /opt/activemq/prometheus/创建规则文件/opt/activemq/prometheus/activemq_jmx.yml采集核心 MBeanstartDelaySeconds:0hostPort:127.0.0.1:1099# ActiveMQ JMX 端口默认 1099ssl:falserules:# 队列指标-pattern:org.apache.activemqtypeBroker, brokerName(.), destinationTypeQueue, destinationName(.)(QueueSize|EnqueueCount|DequeueCount|ConsumerCount|AverageEnqueueTime)name:activemq_queue_$3labels:broker:$1destination:$2type:COUNTER# 主题指标-pattern:org.apache.activemqtypeBroker, brokerName(.), destinationTypeTopic, destinationName(.)(EnqueueCount|DequeueCount|ConsumerCount)name:activemq_topic_$3labels:broker:$1destination:$2type:COUNTER# 连接数-pattern:org.apache.activemqtypeBroker, brokerName(.)(CurrentConnectionsCount|TotalConnectionsCount)name:activemq_connections_$2labels:broker:$1# 存储使用-pattern:org.apache.activemqtypeBroker, brokerName(.)(StorePercentUsage|MemoryPercentUsage|TempPercentUsage)name:activemq_usage_$2labels:broker:$1# JVM 内存与 GC-pattern:java.langtypeMemoryHeapMemoryUsage(used|max)name:jvm_memory_heap_$1-pattern:java.langtypeGarbageCollector, name(.)(CollectionCount|CollectionTime)name:jvm_gc_$1_$2可根据需要添加更多 MBean如SlowConsumer。2.2 修改启动参数编辑bin/env或activemq启动脚本在ACTIVEMQ_OPTS中添加 Java AgentACTIVEMQ_OPTS$ACTIVEMQ_OPTS-javaagent:/opt/activemq/prometheus/jmx_prometheus_javaagent-0.20.0.jar9096:/opt/activemq/prometheus/activemq_jmx.yml这里让代理监听9096端口。重启 ActiveMQ 后curl http://localhost:9096/metrics应返回指标。3. 监控 ActiveMQ Artemis (2.x) 使用内置插件Artemis 的监控极其简单只需在broker.xml中启用 metrics 插件。编辑etc/broker.xml在metrics部分添加metricsjvm-gctrue/jvm-gcpluginclass-nameorg.apache.activemq.artemis.core.server.metrics.plugins.ArtemisPrometheusMetricsPlugin//metrics如果需要暴露具体的队列/地址指标可以增加metricsjvm-gctrue/jvm-gcpluginclass-nameorg.apache.activemq.artemis.core.server.metrics.plugins.ArtemisPrometheusMetricsPluginpropertykeymetrics-pathvalue/metrics//pluginmetricnameaddress.size/metricnamequeue.message.count/metricnamequeue.consumer.count//metrics默认会在管理 HTTP 端口通常是8161上提供/metrics端点。也可以单独配置 Prometheus 端口例如在etc/bootstrap.xml中配置 Netty Acceptor。重启后访问http://localhost:8161/metrics验证。4. 配置 Prometheus 抓取4.1 对于 ActiveMQ Classic (JMX Exporter)scrape_configs:-job_name:activemq-classicscrape_interval:30sstatic_configs:-targets:[activemq-host:9096]labels:instance:mq-prodversion:5.x4.2 对于 ActiveMQ Artemis-job_name:activemq-artemisscrape_interval:30sstatic_configs:-targets:[artemis-host:8161]labels:instance:mq-prodversion:artemismetrics_path:/metrics如果 Artemis 使用独立的 Prometheus 端口如 9404直接抓取该端口。5. 核心监控指标与 PromQL5.1 Classic (基于 JMX Exporter 规则)指标含义PromQL 示例activemq_queue_QueueSize队列中待消费消息数activemq_queue_QueueSize 1000activemq_queue_EnqueueCount(Counter)入队总数rate(activemq_queue_EnqueueCount[1m])activemq_queue_DequeueCount(Counter)出队总数rate(activemq_queue_DequeueCount[1m])activemq_queue_ConsumerCount消费者数量为 0 且有 QueueSize 则告警activemq_connections_CurrentConnectionsCount当前连接数直接查看activemq_usage_StorePercentUsage存储使用百分比 80 需告警activemq_usage_MemoryPercentUsage内存使用百分比 80 需告警jvm_memory_heap_used / jvm_memory_heap_max堆内存使用率 85% 告警5.2 Artemis (内置指标)Artemis 的指标名称前缀为artemis_如指标含义PromQL 示例artemis_address_messages_total地址下消息总数可求和看全局堆积artemis_queue_message_count特定队列消息数artemis_queue_message_count{queuemyQueue}artemis_consumer_count消费者数量artemis_consumer_count 0artemis_messages_added_total入队速率rate(artemis_messages_added_total[1m])artemis_messages_acknowledged_total已确认速率对比入队看积压趋势artemis_connection_count连接数监控连接数抖动artemis_total_connection_count累计连接rate(artemis_total_connection_count[5m])artemis_disk_store_usage_ratio磁盘存储使用率 0.8 告警artemis_memory_usage/artemis_memory_max内存使用/上限artemis_memory_usage / artemis_memory_max具体指标名以/metrics输出为准不同 Artemis 版本可能略有变化但都遵循artemis_前缀。6. Grafana 仪表盘推荐ActiveMQ Artemis DashboardDashboard ID12729专为 Artemis Prometheus 插件设计展示队列、地址、消费者、内存、磁盘等。ActiveMQ Classic (JMX)ID10944基于 JMX Exporter 指标适用于 Classic 5.x。通用 JVM 监控可与 Spring Boot 或 Node Exporter 面板配合使用。导入后选择数据源将instance或broker变量映射至你的 ActiveMQ 实例。7. 告警规则实战以下规则可适配 Classic调整指标名与 ArtemisClassic 版本告警groups:-name:activemq_classic_alertsrules:-alert:ActiveMQDownexpr:up{jobactivemq-classic} 0for:1mlabels:severity:criticalannotations:summary:ActiveMQ 实例 {{ $labels.instance }} 宕机-alert:ActiveMQQueueDepthHighexpr:activemq_queue_QueueSize5000for:5mlabels:severity:warningannotations:summary:队列 {{ $labels.destination }} 深度超过 5000-alert:ActiveMQNoConsumerexpr:activemq_queue_QueueSize0 and activemq_queue_ConsumerCount 0for:2mlabels:severity:criticalannotations:summary:队列 {{ $labels.destination }} 有消息但没有消费者-alert:ActiveMQStoreUsageHighexpr:activemq_usage_StorePercentUsage80for:5mlabels:severity:criticalannotations:summary:ActiveMQ 存储使用率超过 80%Artemis 版本告警groups:-name:activemq_artemis_alertsrules:-alert:ArtemisDownexpr:up{jobactivemq-artemis} 0for:1mlabels:severity:criticalannotations:summary:Artemis 实例 {{ $labels.instance }} 宕机-alert:ArtemisQueueDepthHighexpr:artemis_queue_message_count5000for:5mlabels:severity:warningannotations:summary:Artemis 队列 {{ $labels.queue }} 消息堆积超过 5000-alert:ArtemisNoConsumerexpr:artemis_queue_message_count0 and artemis_consumer_count 0for:2mlabels:severity:criticalannotations:summary:Artemis 队列 {{ $labels.queue }} 有消息但无消费者-alert:ArtemisDiskUsageHighexpr:artemis_disk_store_usage_ratio0.8for:5mlabels:severity:criticalannotations:summary:Artemis 磁盘使用率超过 80%8. 进阶安全、多实例与性能8.1 保护指标端点Classic (JMX Exporter)通过防火墙限制 9096 端口或通过 Nginx 反代添加 Basic Auth。Artemis在broker.xml中配置metrics-security或使用管理 HTTP 端口的安全配置限制访问。8.2 多 Broker 监控ActiveMQ Classic 支持主从Master/Slave只需为每个实例配置不同的 JMX Exporter 端口分别加入 Prometheus targets。Artemis 集群的每个节点也只需各自暴露/metrics。8.3 性能开销JMX Exporter 本身开销极小内存 ~50MBArtemis 内置插件零额外成本。抓取间隔 30s 完全足够。部署完成后ActiveMQ 的队列健康、消息流转、资源消耗一目了然。任何消息堆积、消费者消失、存储爆满都能立即触发告警让消息中间件从“盲区”变为可靠的可观测组件与你的服务器、应用监控融为一体保障消息驱动的业务永续运行。
RELATED

相关推荐

2026 适合学生上班族的视频总结app推荐 哪个好用不踩雷

2026 适合学生上班族的视频总结app推荐 哪个好用不踩雷

先说明白核心判断 针对学生整理课程视频、职场新人梳理入职培训内容的需求,结合2026年1月各工具当前版本的实测结果,五款工具各有适配场景,没有绝对全能的选项:高频整理学习/会议内容可选择听脑AI,大公司内部协作优先…

📅 2026/11/9 20:51:40
2026年录音转换文字工具实测对比:哪个更好用,差距竟然这么大?

2026年录音转换文字工具实测对比:哪个更好用,差距竟然这么大?

先看结论:这类工具怎么选 本次针对知识付费用户整理付费课程、播客内容的需求,实测了五款主流录音转换文字工具,没有能适配所有场景的万能工具,差距主要体现在转写后整理、知识结构化的能力上,而不是基础转写准确率。…

📅 2026/10/24 5:46:55
鲁班猫板:大学生编程入门与硬件开发实战指南

鲁班猫板:大学生编程入门与硬件开发实战指南

1. 为什么大学生需要鲁班猫板入门编程第一次接触编程的大学生往往面临一个尴尬的困境:学校教的C语言还在写黑框程序,而网上炫酷的智能小车、人脸识别项目又不知从何入手。传统学习路径存在几个断层:语法学习与实际硬件脱节:在VC6.…

📅 2026/11/6 8:25:16
MORE NEWS

更多资讯

📰

办电工证不用本人去 电工证怎么考 官方报名入口在哪

办电工证不用本人去 电工证怎么考 官方报名入口在哪 你是不是正在找工作,却被“必须持有电工证才能上岗”拦住了去路?别急,现在 办电工证不用本人去…

📰

之前考的证在外省能不能转过来?建材电工证全国通用怎么转?

之前考的证在外省能不能转过来?建材电工证全国通用怎么转? 之前考的证在外省能不能转过来?建材电工证全国通用怎么转?这个问题几乎每个从外地转岗到河南的建材电工都会问,尤其是像我这样从濮阳转岗过来的老电工,以前在外地考的证,到了河南能不能直接用…

📰

徐工特种灾害抢险官方回应:实操考试心里没底怕挂科?这几点必须知道

徐工特种灾害抢险官方回应:实操考试心里没底怕挂科?这几点必须知道 实操考试心里没底怕挂科?这几乎是每个准备报考徐工特种灾害抢险证书的人的共同担忧。特别是对刚入行的项目现场管理员来说,证书的含金量和实操环节的通过率直接影响职业发展。但你知道吗…

📰

青岛市高压电工证复审怕被坑?这3步教你避开陷阱,证书含金量不打折

青岛市高压电工证复审怕被坑?这3步教你避开陷阱,证书含金量不打折 不知道去哪报名怕被中介坑?这事儿可太真实了,我身边不少同行都吃过亏。尤其是青岛市高压电工证复审,流程复杂、政策多变,稍不留神就可能白花冤枉钱。别急,今天我从一个转岗到鹤壁的电…

📰

中级电工证费用低怎么选靠谱机构?电子证书查询方法全在这里

中级电工证费用低怎么选靠谱机构?电子证书查询方法全在这里 你是不是正愁不知道去哪报名中级电工证,怕被中介坑?别急,这篇就是为你准备的。中级电工证费用低不等于质量差,关键是得选对正规渠道,确保拿到的是国家认可的 电子证书…

📰

河源那里有电工证复审?学历不高也能考,全国通用真香

河源那里有电工证复审?学历不高也能考,全国通用真香 你是不是也担心自己学历不够,电工证复审根本报不上名?别急,今天咱们就来说说, 河源那里有电工证复审 ,到底能不能报,能不能顺利通过,还有你最关心的薪资问题。 全国通用…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬