尧图网络 高端网站定制 · 原创设计
免费咨询热线
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/9/12 23:55:46
2026年录音转换文字工具实测对比:哪个更好用,差距竟然这么大?

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

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

📅 2026/8/1 13:46:16
鲁班猫板:大学生编程入门与硬件开发实战指南

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

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

📅 2026/8/2 14:50:23
MORE NEWS

更多资讯

📰

如何为自托管 sim 配置事务邮件提供商让工作区邀请与验证邮件真正发出

如何为自托管 sim 配置事务邮件提供商让工作区邀请与验证邮件真正发出 【免费下载链接】sim Sim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000 builders. 项目地址: https://gitcode.com/GitHub_Trending/sim16/…

📰

OCR多源域对齐数据集预处理与词典引导解码实战

简介:本资源面向人工智能与机器学习方向的初学者及OCR算法实践者,聚焦文本识别任务中的数据预处理与特征工程关键环节,提供开箱即用的标准化数据集与工具支持。压缩包共2000个文件,主体为1993张PNG格式场景文字图像(来…

📰

GenOffice:以自然语言重构办公工作流的AI原生套件

1. 为什么说GenOffice不是“又一个AI办公套件”,而是办公逻辑的重新定义最近两周,我连续帮三位不同行业的客户做了办公效率诊断:一位是高校教务处老师,每天要处理30份格式不一的教学大纲Word文档;一位是初创公司市场总…

📰

awesome-copilot 之 breakdown-feature-prd 技能:基于 Epic 自动生成高质量 Feature PRD 的完整实战指南

awesome-copilot 之 breakdown-feature-prd 技能:基于 Epic 自动生成高质量 Feature PRD 的完整实战指南 【免费下载链接】awesome-copilot Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.…

📰

如何用 tokio::sync::OnceCell 实现全局配置的异步一次性初始化

如何用 tokio::sync::OnceCell 实现全局配置的异步一次性初始化 【免费下载链接】tokio A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ... 项目地址: https://gitcode.com/GitHub_Trending/to/tokio…

📰

鳑鲏鱼优化算法结合BP神经网络实现分类预测的Matlab源码详解

简介:这份源码包给出了鳑鲏鱼优化算法与BP神经网络结合的分类预测完整实现,面向高校学生在课程设计、期末大作业或毕业设计中的算法仿真场景。压缩包内共十一个文件,其中五个m文件提供主程序、优化算法、适应度函数及混淆矩阵绘制等核心代码&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬