写点什么

ActiveMQ 可观测性最佳实践

作者:观测云
  • 2025-05-28
    上海
  • 本文字数:2623 字

    阅读完需:约 9 分钟

ActiveMQ 可观测性最佳实践

ActiveMQ 介绍

ActiveMQ 是一款高性能、开源的消息中间件,支持多种消息协议(如 JMS、AMQP、MQTT 等),能够实现应用程序之间的异步通信和消息传递。它提供点对点(Queue)和发布/订阅(Topic)两种消息模型,支持消息持久化、事务处理、消息优先级、延迟消息等功能,确保消息的可靠传输和顺序处理。此外,ActiveMQ 还具备集群、主从复制等高可用性特性,以及灵活的配置和扩展能力,适用于构建分布式系统和微服务架构,帮助开发者构建高效、可靠的消息驱动应用。


ActiveMQ 监控是确保消息中间件高可用性和性能的关键环节。通过监控关键指标,如连接数、消费者和生产者数量、队列和主题的入队/出队速率、内存和存储使用率、以及死信队列消息数量等,可以及时发现并解决潜在问题。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。


登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。


数据采集

ActiveMQ 配置

ActiveMQ 使用 Java 语言编写,支持通过 jmx prometheus 插件进行指标暴露。


  • 下载 jmx-exporter


下载地址:https://github.com/prometheus/jmx_exporter


  • 新增 ActiveMQ jmx 配置


在 ActiveMQ 的 conf 目录下新增 jmx.yaml 文件,内容如下:


lowercaseOutputName: truelowercaseOutputLabelNames: trueblacklistObjectNames:  - "org.apache.activemq:clientId=*,*"whitelistObjectNames:  - "org.apache.activemq:destinationType=Queue,*"  - "org.apache.activemq:destinationType=Topic,*"  - "org.apache.activemq:type=Broker,brokerName=*"  - "org.apache.activemq:type=Topic,brokerName=*"  - "org.apache.activemq:type=Broker,brokerName=*,destinationType=Queue,destinationName=*,endpoint=*,clientId=*,consumerId=*"  - "org.apache.activemq:type=Broker,brokerName=*,destinationType=Topic,destinationName=*,endpoint=*,clientId=*,consumerId=*"rules:- pattern: org.apache.activemq:type=Broker,brokerName=(\S+),destinationType=(\S+),destinationName=(\S+),endpoint=(\S+),clientId=(\S+),consumerId=(\S+),?>(\w+)  name: "activemq_consumer_$7"  labels:    broker_name: "$1"    destination_type: "$2"    destination_name: "$3"    endpoint: "$4"    client_id: "$5"    consumer_id: "$6"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*), destinationType=Queue, destinationName=(\S*)><>(\w+) name: activemq_queue_$3 attrNameSnakeCase: true labels: broker_name: "$1" destination_name: "$2" destination_type: "Queue"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*), destinationType=Topic, destinationName=(\S*)><>(\w+) name: activemq_topic_$3 attrNameSnakeCase: true labels: broker_name: "$1" destination_name: "$2" destination_type: "Topic"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>CurrentConnectionsCount name: activemq_connections type: GAUGE labels: broker_name: "$1" connection_type: current- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>TotalConnectionsCount name: activemq_connections type: GAUGE labels: broker_name: "$1" connection_type: total
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>Total(.*)Count name: activemq_$2_total type: COUNTER labels: broker_name: "$1"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>(.*)PercentUsage name: activemq_$2_usage_ratio type: GAUGE labels: broker_name: "$1" valueFactor: 0.01
复制代码


  • 调整 ActiveMQ 启动参数


在 ActiveMQ 的 bin 目录下,修改 setenv 文件,添加如下内容:


ACTIVEMQ_OPTS="-javaagent:${ACTIVEMQ_BASE}/jmx_prometheus_javaagent-1.2.0.jar=8081:${ACTIVEMQ_BASE}/conf/jmx.yaml"
复制代码


当前设置的端口号为 8081,下面采集会用到,可以进行调整,但需要跟采集端口保持一致。


  • 重启 ActiveMQ


bin/activemq stopbin/activemq start
复制代码

DataKit 开启 Prom 采集器

开启 prometheus 采集器采集 ActiveMQ 的指标。进入 DataKit 安装目录 /usr/local/datakit/conf.d,复制 prom 目录下的配置文件并命名为 activemq.conf。 示例如下:


cp prom.conf.sample activemq.conf
复制代码


调整内容如下:


[[inputs.prom]]  ## Exporter URLs.  urls = ["http://localhost:8081/metrics"]
source = "activemq" ...
复制代码

重启 DataKit

调整完毕后,重启 DataKit。


datakit service -R
复制代码

关键指标



场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “ActiveMQ”, 选择 “ActiveMQ”,点击 “确定” 即可添加视图。


通过概览,可以了解到 ActiveMQ 的基础信息,如消息总积压、连接数等。



Queue 可以看到队列消息的生产、消费、积压等。



Topic 部分可以了解到 Topic 的消息的生产、消费、积压等。


监控器(告警)

观测云内置了监控器模板,可以选择从模版创建监控器,并开启适合业务的监控器以及时通知相关成员关注问题,触发条件、频率等信息可以依据实际业务进行调整。


登录观测云控制台,点击「监控」 -「新建监控器」,输入 “ActiveMQ”, 选择对应的监控器,点击 “确定” 即可添加。

ActiveMQ 队列中有大量被阻塞的发送操作

ActiveMQ 队列消息积压


观测云内置了 10 多个 ActiveMQ 告警监控器,可按实际需求添加。


总结

使用观测云采集 ActiveMQ 指标数据,可以实现自动化监控、数据收集和告警通知。这不仅有助于优化资源分配,还能提高系统的可靠性和响应速度,确保消息的高效传递和处理。

用户头像

观测云

关注

还未添加个人签名 2021-02-08 加入

云时代的系统可观测平台

评论

发布
暂无评论
ActiveMQ 可观测性最佳实践_Activemq_观测云_InfoQ写作社区