Skip to main content

🧣 JMX 監控

本章節解析 ActiveMQ 透過 JMX(Java Management Extensions)暴露的運行指標。掌握關鍵 MBean,就能搭建自動化監控與告警,而不只依賴 Web Console 手動查看。

環境

1. JMX 連線資訊

項目預設值
JMX URLservice:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
Port1099
認證預設無(生產環境應啟用)

可使用 JConsole、VisualVM 或 Jolokia 連線。

2. 關鍵 MBean

2.1 Queue MBean

路徑: org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName={QUEUE_NAME}

屬性說明
QueueSize待處理訊息數
EnqueueCount累計入隊
DequeueCount累計出隊
ConsumerCount消費者數
MemoryPercentUsage記憶體使用百分比

2.2 Broker MBean

路徑: org.apache.activemq:type=Broker,brokerName=localhost

屬性說明
CurrentConnectionsCount當前連線數
TotalConnectionsCount累計連線數
MemoryPercentUsageBroker 整體記憶體使用率
StorePercentUsage持久化儲存使用率
TempPercentUsage暫存空間使用率

3. 告警建議閾值

指標警告嚴重
QueueSize持續增長 > 1 小時> 10000
StorePercentUsage> 70%> 90%
MemoryPercentUsage> 70%> 90%
ConsumerCount= 0 且 QueueSize > 0

趨勢型告警(成長率、入出淨差、分級策略)請參見 proactiveAlerting

4. Jolokia + Prometheus 簡介

Jolokia 提供 HTTP 代理存取 JMX,可搭配 Prometheus JMX Exporter 收集指標:

<!-- 在 conf/activemq.xml 加入 Jolokia agent(需額外部署) -->

常見做法是在 Broker 同機部署 Jolokia WAR 或使用 jmx_exporter sidecar,將 MBean 指標轉為 Prometheus 格式後接入 Grafana 告警。

5. 常見問題與排查

現象可能原因處理方式
JConsole 連不上1099 port 未開檢查防火牆與 ACTIVEMQ_SUNJMX_START
MBean 列表為空brokerName 不符確認 brokerName 屬性值
遠端 JMX 失敗僅綁定 localhost設定 java.rmi.server.hostname

6. 與其他文章的關聯