ActiveMQ 可觀測性最佳實踐

ActiveMQ 介紹

ActiveMQ 是一款高性能、開源的消息中間件,支持多種消息協議(如 JMS、AMQP、MQTT 等),能夠實現應用程序之間的異步通信和消息傳遞。它提供點對點(Queue)和發布/訂閱(Topic)兩種消息模型,支持消息持久化、事務處理、消息優先級、延遲消息等功能,確保消息的可靠傳輸和順序處理。此外,ActiveMQ 還具備集群、主從復制等高可用性特性,以及靈活的配置和擴展能力,適用于構建分布式系統和微服務架構,幫助開發者構建高效、可靠的消息驅動應用。

ActiveMQ 監控是確保消息中間件高可用性和性能的關鍵環節。通過監控關鍵指標,如連接數、消費者和生產者數量、隊列和主題的入隊/出隊速率、內存和存儲使用率、以及死信隊列消息數量等,可以及時發現并解決潛在問題。

觀測云

觀測云是一款專為 IT 工程師打造的全鏈路可觀測產品,它集成了基礎設施監控、應用程序性能監控和日志管理,為整個技術棧提供實時可觀察性。這款產品能夠幫助工程師全面了解端到端的用戶體驗追蹤,了解應用內函數的每一次調用,以及全面監控云時代的基礎設施。此外,觀測云還具備快速發現系統安全風險的能力,為數字化時代提供安全保障。

部署 DataKit

DataKit 是一個開源的、跨平臺的數據收集和監控工具,由觀測云開發并維護。它旨在幫助用戶收集、處理和分析各種數據源,如日志、指標和事件,以便進行有效的監控和故障排查。DataKit 支持多種數據輸入和輸出格式,可以輕松集成到現有的監控系統中。

登錄觀測云控制臺,在「集成」 - 「DataKit」選擇對應安裝方式,當前采用 Linux 主機部署 DataKit。

數據采集

ActiveMQ 配置

ActiveMQ 使用 Java 語言編寫,支持通過 jmx prometheus 插件進行指標暴露。

  • 下載 jmx-exporter

下載地址:GitHub - prometheus/jmx_exporter: A process for collecting metrics using JMX MBeans for Prometheus consumption

  • 新增 ActiveMQ jmx 配置

在 ActiveMQ 的 conf 目錄下新增?jmx.yaml?文件,內容如下:

lowercaseOutputName: true
lowercaseOutputLabelNames: true
blacklistObjectNames:- "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_$3attrNameSnakeCase: truelabels: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_$3attrNameSnakeCase: truelabels:broker_name: "$1"destination_name: "$2"destination_type: "Topic"- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>CurrentConnectionsCountname: activemq_connectionstype: GAUGElabels:broker_name: "$1"connection_type: current
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>TotalConnectionsCountname: activemq_connectionstype: GAUGElabels:broker_name: "$1"connection_type: total- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>Total(.*)Countname: activemq_$2_totaltype: COUNTERlabels:broker_name: "$1"- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>(.*)PercentUsagename: activemq_$2_usage_ratiotype: GAUGElabels: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 stop
bin/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

關鍵指標

指標名稱描述單位
connections當前與 ActiveMQ Broker 建立的客戶端連接數量
consumer_total累計創建的消費者(Consumer)數量
dequeue_total所有隊列/主題中成功被消費的消息總數
enqueue_total所有隊列/主題中接收到的新消息總數
jobschedulerstore_usage_ratioJobSchedulerStore 的使用比例,表示持久化任務存儲空間占用百分比(%)
memory_usage_ratioActiveMQ Broker 使用的內存占配置上限的比例百分比(%)
message_total當前在 Broker 上存在的所有消息數量(包括待處理和未確認的消息)
producer_total累計創建的消息生產者(Producer)數量
queue_always_retroactive表示該隊列是否啟用“始終回溯”功能,允許新消費者獲取歷史消息布爾值(0/1)
queue_average_blocked_time隊列因資源不足而阻塞的時間平均值毫秒(ms)
queue_average_enqueue_time消息進入隊列所需的平均時間毫秒(ms)
queue_average_message_size隊列中消息的平均字節大小字節(B)
queue_blocked_producer_warning_interval生產者因隊列滿而被阻塞的警告間隔時間秒(s)
queue_blocked_sends因隊列滿而導致生產者被阻塞的累計次數
queue_cache_enabled表示當前隊列是否啟用了緩存機制布爾值(0/1)
queue_consumer_count當前訂閱或監聽該隊列的消費者數量
queue_cursor_full表示隊列的消息游標(Cursor)是否已達到最大容量布爾值(0/1)
queue_cursor_memory_usage隊列游標使用的內存量字節(B)
queue_cursor_percent_usage隊列游標內存使用占總分配內存的比例百分比(%)
queue_dequeue_count從該隊列中成功消費的消息數量
queue_dispatch_count已經嘗試派發給消費者的累計消息數量
queue_dlq被轉移到死信隊列(DLQ)中的消息數量
queue_duplicate_from_store_count由于網絡或其他問題導致消息從持久化存儲中重復讀取的次數
queue_enqueue_count添加到該隊列的消息數量
queue_expired_count因設置 TTL 而過期的消息數量
queue_forward_count該隊列將消息轉發到其他目的地的累計次數
queue_in_flight_count正在被消費者處理但尚未確認的消息數量
queue_max_audit_depth審計重復消息時的最大記錄條目數
queue_max_enqueue_time消息進入隊列所需時間的最大值毫秒(ms)
queue_max_message_size隊列中單條消息的最大字節大小字節(B)
queue_max_page_size分頁加載消息時的最大頁大小
queue_max_producers_to_audit可以被追蹤并用于重復檢查的生產者最大數量
queue_memory_limit該隊列為消息存儲所分配的最大內存字節(B)
queue_memory_percent_usage隊列當前內存使用占配置上限的比例百分比(%)
queue_memory_usage_byte_count隊列當前實際占用的內存大小字節(B)
queue_memory_usage_portion隊列在整體內存使用中的占比浮點數(0~1)
queue_min_enqueue_time消息進入隊列所需時間的最小值毫秒(ms)
queue_min_message_size隊列中單條消息的最小字節大小字節(B)
queue_paused表示該隊列是否處于暫停狀態布爾值(0/1)
queue_prioritized_messages表示是否啟用消息優先級排序功能布爾值(0/1)
queue_producer_count當前向該隊列發送消息的生產者數量
queue_producer_flow_control是否啟用生產者流量控制布爾值(0/1)
queue_queue_size當前隊列中等待被消費的消息總數
queue_send_duplicate_from_store_to_dlq從持久化存儲中發送到死信隊列的重復消息數量
queue_store_message_size隊列中所有消息在持久化存儲中的總大小字節(B)
queue_temp_usage_limit隊列臨時消息存儲的最大限制字節(B)
queue_temp_usage_percent_usage隊列臨時存儲使用占配置上限的比例百分比(%)
queue_total_blocked_time隊列因資源不足而導致的累計阻塞時間毫秒(ms)
queue_use_cache表示該隊列是否啟用了緩存機制布爾值(0/1)
store_usage_ratio主消息存儲(如文件系統或數據庫)的使用比例百分比(%)
temp_usage_ratio臨時消息存儲的使用比例百分比(%)
topic_always_retroactive表示該主題是否啟用“始終回溯”功能,允許新消費者獲取歷史消息布爾值(0/1)
topic_average_blocked_time主題因資源不足而阻塞的時間平均值毫秒(ms)
topic_average_enqueue_time消息進入主題所需的平均時間毫秒(ms)
topic_average_message_size主題中消息的平均字節大小字節(B)
topic_blocked_producer_warning_interval生產者因主題滿而被阻塞的警告間隔時間秒(s)
topic_blocked_sends因主題滿而導致生產者被阻塞的累計次數
topic_cache_enabled表示當前主題是否啟用了緩存機制布爾值(0/1)
topic_consumer_count當前訂閱或監聽該主題的消費者數量
topic_cursor_full表示主題的消息游標(Cursor)是否已達到最大容量布爾值(0/1)
topic_cursor_memory_usage主題游標使用的內存量字節(B)
topic_cursor_percent_usage主題游標內存使用占總分配內存的比例百分比(%)
topic_dequeue_count從該主題中成功消費的消息數量
topic_dispatch_count已經嘗試派發給消費者的累計消息數量
topic_dlq被轉移到死信主題(DLQ)中的消息數量
topic_duplicate_from_store_count由于網絡或其他問題導致消息從持久化存儲中重復讀取的次數
topic_enqueue_count添加到該主題的消息數量
topic_expired_count因設置 TTL 而過期的消息數量
topic_forward_count該主題將消息轉發到其他目的地的累計次數
topic_in_flight_count正在被消費者處理但尚未確認的消息數量
topic_max_audit_depth審計重復消息時的最大記錄條目數
topic_max_enqueue_time消息進入主題所需時間的最大值毫秒(ms)
topic_max_message_size主題中單條消息的最大字節大小字節(B)
topic_max_page_size分頁加載消息時的最大頁大小
topic_max_producers_to_audit可以被追蹤并用于重復檢查的生產者最大數量
topic_memory_limit該主題為消息存儲所分配的最大內存字節(B)
topic_memory_percent_usage主題當前內存使用占配置上限的比例百分比(%)
topic_memory_usage_byte_count主題當前實際占用的內存大小字節(B)
topic_memory_usage_portion主題在整體內存使用中的占比浮點數(0~1)
topic_min_enqueue_time消息進入主題所需時間的最小值毫秒(ms)
topic_min_message_size主題中單條消息的最小字節大小字節(B)
topic_prioritized_messages表示是否啟用消息優先級排序功能布爾值(0/1)
topic_producer_count當前向該主題發送消息的生產者數量
topic_producer_flow_control是否啟用生產者流量控制布爾值(0/1)
topic_queue_size當前主題中等待被消費的消息總數
topic_send_duplicate_from_store_to_dlq從持久化存儲中發送到死信主題的重復消息數量
topic_store_message_size主題中所有消息在持久化存儲中的總大小字節(B)
topic_temp_usage_limit主題臨時消息存儲的最大限制字節(B)
topic_temp_usage_percent_usage主題臨時存儲使用占配置上限的比例百分比(%)
topic_total_blocked_time主題因資源不足而導致的累計阻塞時間毫秒(ms)
topic_use_cache表示該主題是否啟用了緩存機制布爾值(0/1)

場景視圖

登錄觀測云控制臺,點擊「場景」 -「新建儀表板」,輸入 “ActiveMQ”, 選擇 “ActiveMQ”,點擊 “確定” 即可添加視圖。

通過概覽,可以了解到 ActiveMQ 的基礎信息,如消息總積壓、連接數等。

Queue 可以看到隊列消息的生產、消費、積壓等。

Topic 部分可以了解到 Topic 的消息的生產、消費、積壓等。

監控器(告警)

觀測云內置了監控器模板,可以選擇從模版創建監控器,并開啟適合業務的監控器以及時通知相關成員關注問題,觸發條件、頻率等信息可以依據實際業務進行調整。

登錄觀測云控制臺,點擊「監控」 -「新建監控器」,輸入 “ActiveMQ”, 選擇對應的監控器,點擊 “確定” 即可添加。

ActiveMQ 隊列中有大量被阻塞的發送操作

ActiveMQ 隊列消息積壓

觀測云內置了10多個 ActiveMQ 告警監控器,可按實際需求添加。

總結

使用觀測云采集 ActiveMQ 指標數據,可以實現自動化監控、數據收集和告警通知。這不僅有助于優化資源分配,還能提高系統的可靠性和響應速度,確保消息的高效傳遞和處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85427.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85427.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85427.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux命令】scp遠程拷貝

文章目錄 1. 基本語法與常用選項2. 使用場景和使用示例本地文件->遠程主機遠程主機文件->本地遠程主機->另一臺遠程主機 3. 使用注意事項 scp&#xff08;Secure Copy Protocol&#xff09;是linux中基于ssh的安全文件傳輸工具&#xff0c;用于在本地和遠程主機之前安…

如何優化 Harmony-Cordova 應用的性能?

以下是針對 ?Harmony-Cordova 應用性能優化?的完整方案&#xff0c;結合鴻蒙原生特性和Cordova框架優化策略&#xff1a; ??一、渲染性能優化? ?減少布局嵌套層級? 使用扁平化布局&#xff08;如 Grid、GridRow&#xff09;替代多層 Column/Row 嵌套&#xff0c;避免冗…

c++學習之---模版

目錄 一、函數模板&#xff1a; 1、基本定義格式&#xff1a; 2、模版函數的優先匹配原則&#xff1a; 二、類模板&#xff1a; 1、基本定義格式&#xff1a; 2、類模版的優先匹配原則&#xff08;有坑哦&#xff09;&#xff1a; 3、缺省值的設置&#xff1a; 4、ty…

SpringAI(GA):RAG下的ETL快速上手

原文鏈接&#xff1a;SpringAI(GA)&#xff1a;RAG下的ETL快速上手 教程說明 說明&#xff1a;本教程將采用2025年5月20日正式的GA版&#xff0c;給出如下內容 核心功能模塊的快速上手教程核心功能模塊的源碼級解讀Spring ai alibaba增強的快速上手教程 源碼級解讀 版本&a…

用dayjs解析時間戳,我被提了bug

引言 前幾天開發中突然接到測試提的一個 Bug&#xff0c;說我的時間組件顯示異常。 我很詫異&#xff0c;這里初始化數據是后端返回的&#xff0c;我什么也沒改&#xff0c;這bug提給我干啥。我去問后端&#xff1a;“這數據是不是有問題&#xff1f;”。后端答&#xff1a;“…

DataAgent產品經理(數據智能方向)

DataAgent產品經理&#xff08;數據智能方向&#xff09; 一、核心崗位職責 AI智能體解決方案設計 面向工業/政務場景構建「數據-模型-交互」閉環&#xff0c;需整合多源異構數據&#xff08;如傳感器數據、業務系統日志&#xff09;與AI能力&#xff08;如大模型微調、知識圖…

Ubuntu取消開機用戶自動登錄

注&#xff1a;配置前請先設置登錄密碼&#xff0c;不同顯示管理器配置方法不同&#xff0c;可用命令查看&#xff1a;cat /etc/X11/default-display-manager 一、LightDM 顯示管理器&#xff0c;關閉 Ubuntu 系統用戶自動登錄 查找自動登錄配置文件&#xff0c;可以看到類似 a…

使用lighttpd和開發板進行交互

文章目錄 &#x1f9e0; 一、Lighttpd 與開發板的交互原理1. 什么是 Lighttpd&#xff1f;2. 與開發板交互的方式&#xff1f; &#x1f9fe; 二、lighttpd.conf 配置文件講解?? 注意事項&#xff1a; &#x1f4c1; 三、目錄結構說明&#x1f4a1; 四、使用 C 編寫 CGI 腳本…

Apache IoTDB V2.0.3 發布|新增元數據導入導出腳本適配表模型功能

Release Announcement Version 2.0.3 Apache IoTDB V2.0.3 已經發布&#xff01; V2.0.3 作為樹表雙模型正式版本&#xff0c;主要新增元數據導入導出腳本適配表模型、Spark 生態集成&#xff08;表模型&#xff09;、AINode 返回結果新增時間戳&#xff0c;表模型新增部分聚…

車輛檢測算法在爆炸事故應急響應中的優化路徑

視覺分析賦能車輛管控&#xff1a;以山東應急場景為例 背景&#xff1a;應急場景下的車輛管控痛點 近期山東多起爆炸事故暴露了應急響應中的車輛管理短板&#xff1a;消防車、救護車因違停車輛堵塞通道&#xff0c;違規車輛闖入事故核心區&#xff0c;傳統監控系統依賴人工識別…

∑ 1/n 調和級數 是 發散的

為什么 ∑ 1 u \sum \frac{1}{u} ∑u1?&#xff08;即 ∑ 1 n \sum \frac{1}{n} ∑n1?&#xff0c;通常稱為調和級數&#xff09;是發散的&#xff1f; ? 一、首先明確你問的是這個級數&#xff1a; ∑ n 1 ∞ 1 n \sum_{n1}^{\infty} \frac{1}{n} n1∑∞?n1? 這個級數…

Android第十二次面試-多線程和字符串算法總結

多線程的創建與常見使用方法 ?一、多線程創建方式? ?1. 繼承Thread類? class MyThread extends Thread {Overridepublic void run() {// 線程執行邏輯System.out.println(Thread.currentThread().getName() " is running");} }// 使用 MyThread thread new …

大模型調用數據庫表實踐:基于自然語言的SQL生成與數據查詢系統

# 大模型調用數據庫表實踐&#xff1a;基于自然語言的SQL生成與數據查詢系統 ## 一、背景與目標 在企業數據管理場景中&#xff0c;非技術人員&#xff08;如業務人員、管理人員&#xff09;常常需要通過數據庫查詢獲取關鍵信息&#xff0c;但直接編寫SQL語句存在技術門檻。傳…

28 C 語言作用域詳解:作用域特性(全局、局部、塊級)、應用場景、注意事項

1 作用域簡介 作用域定義了代碼中標識符&#xff08;如變量、常量、數組、函數等&#xff09;的可見性與可訪問范圍&#xff0c;即標識符在程序的哪些位置能夠被引用或訪問。在 C 語言中&#xff0c;作用域主要分為三類&#xff1a; 全局作用域局部作用域塊級作用域 需注意&am…

Tomcat運行比較卡頓進行參數調優

在Tomcat conf/catalina.bat或catalina.sh中 的最上面增加參數 1. 初步調整參數&#xff08;緩解問題&#xff09; set JAVA_OPTS -Xms6g -Xmx6g -Xmn3g # 增大新生代&#xff0c;減少對象過早晉升到老年代 -XX:MetaspaceSize256m -XX:MaxMetaspaceS…

WSL2 安裝與Docker安裝

注意&#xff1a;如沒有科學上網請勿嘗試&#xff0c;無法判斷是否會因網絡錯誤導致的安裝失敗&#xff01;&#xff01;&#xff01; WSL2&#xff08;Windows Subsystem for Linux 2&#xff09; 功能簡介&#xff1a; WSL2 是微軟提供的在 Windows 上運行完整 Linux 內核的…

Redis的安裝與使用

網址&#xff1a;Spring Data Redis 安裝包&#xff1a;Releases tporadowski/redis GitHub 解壓后 在安裝目錄中打開cmd 打開服務&#xff08;注意&#xff1a;每次客戶端連接都有先打開服務&#xff01;&#xff01;&#xff01;&#xff09; 按ctrlC退出服務 客戶端連接…

springboot-響應接收與ioc容器控制反轉、Di依賴注入

1.想將服務器中的數據返回給客戶端&#xff0c;需要在controller類上加注解&#xff1a;ResponseBody; 這個注解其實在前面已經使用過&#xff0c;RestController其實就包含兩個注解&#xff1a; Controller ResponseBody 返回值如果是實體對象/集合&#xff0c;將會轉換為j…

將材質球中的紋理屬性對應的貼圖保存至本地

通過Texture2D的EncodeToPNG方法將紋理轉為圖片形式 material.GetTexture方法通過屬性名獲取紋理貼圖 material.SetTexture方法通過屬性名設置紋理貼圖 屬性名可在shader代碼中查看 using UnityEngine; using System.IO;public class TextureSaver : MonoBehaviour {public…

MySQL半同步復制配置和參數詳解

目錄 1 成功配置主從復制 2 加載插件 3 半同步復制監控 4 半同步復制參數 1 成功配置主從復制 操作步驟參考&#xff1a;https://blog.csdn.net/zyb378747350/article/details/148309545 2 加載插件 #主庫上 MySQL 8.0.26 之前版本: mysql>INSTALL PLUGIN rpl_semi_syn…