ActiveMQ
Apache ActiveMQ 是最流行的开源面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。
Cloud Insight 通过收集 ActiveMQ 数据来可视化 ActiveMQ 传输速率消息存储等消息通信情况,以及和其它应用关联时的性能变化。

性能指标
Cloud Insight 采集 ActiveMQ 以下性能指标:
| 指标 | 单位 | 具体含义 | 
|---|---|---|
| activemq.broker.memory_pct | percent | 内存使用百分比 | 
| activemq.broker.store_pct | percent | 存储(store)使用百分比 | 
| activemq.broker.temp_pct | percent | temporary 使用百分比 | 
| activemq.queue.avg_enqueue_time | milliseconds | 消息队列的平均排队时间(milliseconds) | 
| activemq.queue.consumer_count | 消费者(consumer)连接数 | |
| activemq.queue.dequeue_count | 自上次重新启动出队列的消息数量 | |
| activemq.queue.dispatch_count | 发送给消费者(consumer)的总消息数量(dequeue + in_flig) | |
| activemq.queue.enqueue_count | 自上次重新启动发送到队列中的消息总数 | |
| activemq.queue.expired_count | 未传送已过期的消息数量 | |
| activemq.queue.in_flight_count | 发送给消费者(consumer)还没应答的消息数量 | |
| activemq.queue.max_enqueue_time | milliseconds | 最大的出队列的消息数量(milliseconds) | 
| activemq.queue.memory_pct | percent | 目前内存使用百分比 | 
| activemq.queue.min_enqueue_time | milliseconds | 最小的出队列的消息数量(milliseconds) | 
| activemq.queue.producer_count | 生产者(producer)连接数 | |
| activemq.queue.size | 排队的消息数量 | 
配置 ActiveMQ 监控
启动 JMX Remote
Cloud Insight Agent 通过 JMX 获取 ActiveMQ 中的性能指标,所以确保 JMX Remote 是 enabled 状态。
1.当 ActiveMQ 的版本为 5.8,进入 activemq 的软件目录,修改文件 bin/activemq 的 ACTIVEMQ_SUNJMX_START 参数;当 ActiveMQ 的版本大于 5.8,进入 activemq 的软件目录,修改文件 bin/env 的 ACTIVEMQ_SUNJMX_START 参数。 ACTIVEMQ_SUNJMX_START 参数配置如下:
ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_BASE}/conf/jmx.access -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_BASE}/conf/jmx.password";
2.进入 conf 目录,执行 chmod 444 ./jmx.*,将 jmx.access 和 jmx.password 权限修改为只读;
3.进入 conf 目录,编辑 activemq.xml。在 broker 节点增加 useJmx="true", <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" useJmx="true">。在 managementContext 节点将 createConnector 设置为true,并增加连接端口:<managementContext createConnector="true" connectorPort="1099"/>
由于每个实体最多可以监控 350 个性能指标,所以您需要按照下方的配置方法,修改配置文件来确定自己需要哪些指标。
更多信息,请查阅 ActiveMQ 官方手册。
编辑配置文件
编辑配置文件,使 Cloud Insight Agent 可以与 ActiveMQ 通信。
- 若 ActiveMQ 版本小于 5.8,编辑配置文件 conf.d/activemq.yaml:
instances:
  - host: localhost
    port: 7199
    user: username
    password: password
    name: activemq_instance
# List of metrics to be collected by the integration
init_config:
  conf:
    - include:
        Type: Queue
        attribute:
          AverageEnqueueTime:
            alias: activemq.queue.avg_enqueue_time
            metric_type: gauge
          ConsumerCount:
            alias: activemq.queue.consumer_count
            metric_type: gauge
          ProducerCount:
            alias: activemq.queue.producer_count
            metric_type: gauge
          MaxEnqueueTime:
            alias: activemq.queue.max_enqueue_time
            metric_type: gauge
          MinEnqueueTime:
            alias: activemq.queue.min_enqueue_time
            metric_type: gauge
          MemoryPercentUsage:
            alias: activemq.queue.memory_pct
            metric_type: gauge
          QueueSize:
            alias: activemq.queue.size
            metric_type: gauge
          DequeueCount:
            alias: activemq.queue.dequeue_count
            metric_type: counter
          DispatchCount:
            alias: activemq.queue.dispatch_count
            metric_type: counter
          EnqueueCount:
            alias: activemq.queue.enqueue_count
            metric_type: counter
          ExpiredCount:
            alias: activemq.queue.expired_count
            type: counter
          InFlightCount:
            alias: activemq.queue.in_flight_count
            metric_type: counter
    - include:
        Type: Broker
        attribute:
          StorePercentUsage:
            alias: activemq.broker.store_pct
            metric_type: gauge
          TempPercentUsage:
            alias: activemq.broker.temp_pct
            metric_type: gauge
          MemoryPercentUsage:
            alias: activemq.broker.memory_pct
            metric_type: gauge
- 若 ActiveMQ 版本大于或等于 5.8,编辑配置文件 conf.d/activemq_58.yaml
instances:
  - host: localhost
    port: 7199
    user: username
    password: password
    name: activemq_instance
# List of metrics to be collected by the integration
init_config:
  conf:
    - include:
        destinationType: Queue
        attribute:
          AverageEnqueueTime:
            alias: activemq.queue.avg_enqueue_time
            metric_type: gauge
          ConsumerCount:
            alias: activemq.queue.consumer_count
            metric_type: gauge
          ProducerCount:
            alias: activemq.queue.producer_count
            metric_type: gauge
          MaxEnqueueTime:
            alias: activemq.queue.max_enqueue_time
            metric_type: gauge
          MinEnqueueTime:
            alias: activemq.queue.min_enqueue_time
            metric_type: gauge
          MemoryPercentUsage:
            alias: activemq.queue.memory_pct
            metric_type: gauge
          QueueSize:
            alias: activemq.queue.size
            metric_type: gauge
          DequeueCount:
            alias: activemq.queue.dequeue_count
            metric_type: counter
          DispatchCount:
            alias: activemq.queue.dispatch_count
            metric_type: counter
          EnqueueCount:
            alias: activemq.queue.enqueue_count
            metric_type: counter
          ExpiredCount:
            alias: activemq.queue.expired_count
            metric_type: counter
          InFlightCount:
            alias: activemq.queue.in_flight_count
            metric_type: counter
    - include:
        type: Broker
        attribute:
          StorePercentUsage:
            alias: activemq.broker.store_pct
            metric_type: gauge
          TempPercentUsage:
            alias: activemq.broker.temp_pct
            metric_type: gauge
          MemoryPercentUsage:
            alias: activemq.broker.memory_pct
            metric_type: gauge
重启 Agent
重启 Cloud Insight Agent,使配置生效。
您也可以通过查看 Agent Info 信息,来验证配置是否成功。当出现以下信息,则代表安装成功。
Checks
======
[...]
activemq
--------
  - instance #0 [OK]
  - Collected 8 metrics & 0 events
有关 Agent Info 信息的查看,请访问帮助中心,查看 Cloud Insight Agent 常用操作。
常见问题
- 注意看清楚 ActiveMQ 的版本,根据不同版本配置不同的文件。
- Cloudn't launch JMXTerm. Is Java in your PATH ?
- 若要在同一个服务器上监控多个相同的平台服务,参考如何监控多个平台服务。
- 有任何关于产品的使用疑惑,参考常见问题。