低至 1% 性能損耗:阿里云 ARMS 配置模板如何實現精準可控的 JMX 數據采集
作者:陳承
傳統 Application Performance Monitoring(APM)體系通過框架級插樁(Instrumentation)與后臺服務,實現對應用 Trace、Metric、Log 及 Profiling 數據的全量采集。此類方案基于專家經驗設計,以高密度數據覆蓋確保故障現場信息的完整性,為根因定位提供多維度數據支撐。然而在成本敏感、資源受限、性能及穩定性要求極高等場景中,用戶有不同的 APM 訴求:
- 基礎監控訴求:對于測試、預發、非核心應用、成本敏感等場景,基礎 JVM 監控指標(如堆內存、GC 行為)結合輕量化診斷能力(內存 Dump、持續性能剖析、Arthas 實時診斷)即可滿足多數線上問題排查訴求。
- 自定義監控訴求:對于一些成熟的應用,用戶有一套自己運維方法論,強烈依賴自身在應用內部定義的一些監控數據,包括日志、指標和 span 等數據。
總結下來,用戶監控需求呈現明顯的場景分級特征,大體可分為三級:

不同的需求層級本質上是對定制化監控方案的訴求。阿里云應用實時監控服務 ARMS 在默認提供 L3 級別的應用可觀測能力外,也提供了基于配置模板的解決方案也支持通過簡易配置即可靈活控制采集策略,為用戶提供 L1~L3 全層級的應用可觀測方案。一個配置模板代表一種監控場景。圍繞配置模板,ARMS 提供了下述能力:
-
不同語言提供常用的系統內置模板,涵蓋最基礎和最完備的監控配置,比如針對 Java 語言,提供下述兩種配置模板:
- JVM JMX 監控模板:僅采集 20+ 關鍵 JMX 指標(堆內存、線程、類加載等)。性能開銷極低(1% 以下),數據上報量低(單節點單天上報數據量約等于 1GB)
- 完整 APM 監控模板:涵蓋 Trace 追蹤、異常堆棧、RED 指標、JVM 指標、 Profiling 等監控數據的采集,能覆蓋錯、慢、異常等大多數問題的定位。性能開銷低(大多數場景下小于 10%),數據上報量相對較多(大多數情況下單節點單天上報數據量約等于 15GB)
-
支持配置模板自定義。基于系統內置模板,通過對部分應用監控配置的調整,完成適合用戶監控場景的自定義配置模板創建。
-
應用創建時支持指定生效的配置模板。
下文將系統地介紹 ARMS 配置模板的功能,并以 JVM JMX 監控模板為例演示端到端配置流程。
ARMS 配置模板功能介紹
配置模板管理頁面介紹
打開阿里云云監控 2.0 控制臺 [ 1] ,選擇任意一個工作空間后進入應用監控卡片。

在該頁面,通過列表的形式展示了用戶在當前 workspace 的所有配置模板。
-
名稱:當前模板的名稱。
-
描述:當前模板的描述。
-
類型:目前有兩種,系統內置和自定義。初始情況下只有系統內置模板,用戶可根據自身訴求將當前一些應用的配置保存為自定義模板。
-
來源:系統內置模板都是系統管理員,自定義模板則展示該模板的來源應用,自定義模板一般通過在應用配置頁面點擊另存為配置模板的方式創建,如下圖所示:

-
語言:目前有 Java、Go、Python 三種,分別代表該模板作用的應用語言類型。
-
全局配置模板:一個語言在一個 workspace 可以選擇一個模板作為全局配置模板。此后該 workspace 下新創建的應用會以該模板為內容創建一份應用配置。
-
操作:可以將一個模板配置為全局配置模板或者取消配置為全局配置模板,也可以查看該模板的內容以及刪除一些用戶自定義模板。
配置模板使用方式介紹
步驟 1:創建需要的配置模板【可選】
選擇任意應用,將該應用的應用配置調整為預期的配置,點擊保存后,再點擊保存為自定義配置模板。
步驟 2:新接入應用指定生效的配置模板
ack-onepilot 方式接入的應用,詳見接入文檔 [ 2] 。
方式 1:在配置管理頁面將步驟 1 得到的模板設置為全局模板。之后所有 ack-onepilot 方式接入的新應用均會用該模板的內容創建應用自定義配置。
方式 2:修改應用的 yaml 時,新增加一個名為 apsara.apm/armsConfigTemplate 的 label,該 label 對應的 value 為預期生效的模板名稱(注意,方式 2 優先級高于方式 1),以 jvm_jmx_default 這個模板為例,應用的 yaml 需要修改為下述形式。

手動掛載探針方式接入的應用,詳見接入文檔 [ 3] 。
對于手動掛載探針的應用,需要用戶在應用實際掛載探針前,通過 OpenAPI 預先創建好應用。
應用引入下述依賴:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>cms20240330</artifactId>
<version>3.1.0</version>
</dependency>
按照下述方式提前創建應用,并在創建應用的時候指定配置模板即可。
/**
*
* 創建應用接口
*
* @param workspace 云監控2.0的workspace
* @param appName 應用名稱
* @param configTemplateName 配置模板名稱
* @param regionId 當前workspace 對應的regionId
* @return 創建應用的返回值
*/
public static CreateServiceResponse createApp(String workspace, String appName, String configTemplateName, String regionId) {
try {
Config config = new Config();
config.setAccessKeyId("your ak");
config.setAccessKeySecret("your sk");
config.setEndpoint(String.format("cms.%s.aliyuncs.com", regionId));
Client client = new Client(config);
CreateServiceRequest request = new CreateServiceRequest();
request.setServiceName(appName);
request.setServiceType("TRACE");
request.setAttributes(String.format("{\"armsConfigTemplate\":\"%s\", \"language\":\"JAVA\"}", configTemplateName));
return client.createService("default-cms-1672753017899339-cn-hangzhou", request);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
基礎:基于配置模板實現 JVM 的 JMX 指標采集和監控
前面提到對于一個 Java 應用,目前 ARMS 提供了兩種系統內置模板,它們的名字分別是:
- apm_java_default:這個模板提供標準 APM 數據采集服務,是當前 Java 應用接入 ARMS 默認的配置。
- jvm_jmx_default:這個模板僅提供 JVM 部分重要 JMX bean 數據的采集服務,包括 GC、內存、線程耗時等指標。相關指標名稱完全對齊在 Grafana 社區中廣受歡迎的開源 JVM 監控大盤 [ 4] 指標規范。
通過上一章節的介紹,新應用接入可以使用 jvm_jmx_default 這個模板,這樣這些新應用默認只會采集一些重要的 JMX bean 的指標。完成應用接入后,在該應用的場景化分析頁面即可看到相關 JMX 指標的大盤。

進階:通過配置模板實現個性化監控方案定制
當 Java 應用通過 jvm_jmx_default 模板完成基礎 JVM 監控接入后,隨著業務監控需求的演進,可通過以下三級擴展機制實現監控能力升級:
1. 框架級深度觀測能力擴展
場景需求:需監控 Web 服務(Tomcat/Spring MVC)、RPC 框架(Dubbo/gRPC)或數據庫(MySQL/Redis)的調用鏈與性能指標。
實施方式:
- 在應用配置界面啟用對應插件模塊
- 觸發應用實例重啟以激活采集器更新
完整支持列表與版本兼容性詳見探針插件開關配置指南 [ 5]
2. 性能瓶頸診斷能力增強
場景需求:定位 CPU 開銷高、gc 頻繁等高階性能問題。
實施方式:
- 啟用 Continuous Profiling 功能
- 通過火焰圖可視化分析熱點方法調用樹
技術優勢:
- 低開銷采樣(<5% CPU 利用率)保障生產環境可用性
- 支持同步展示 CPU、Memory 多維度剖析數據
操作細則詳見持續剖析性能診斷實踐 [ 6]
3. 業務級可觀測性定制
場景需求:定義業務黃金指標(如訂單處理速率)、自定義 SLO/SLI 度量。
實施方式:
- 基于 OpenTelemetry SDK 實現指標埋點(Counter/Gauge/Histogram)
- 在監控配置中心注冊自定義指標采集規則
典型應用:
- 交易成功率 = (成功訂單數)/(總訂單數) × 100%
- API P99 時延的 SLO 達標率統計
開發規范詳見 OT-SDK 自定義指標接入手冊 [ 7]
4. 可持續監控治理機制
當通過長期實踐驗證某配置方案在功能性(覆蓋度)、性能(資源損耗比)、經濟性(存儲成本)三個維度達到最優平衡時:
- 進入應用的配置頁面將當前應用的配置保存為自定義配置模板。
- 【可選】在配置模板管理頁面將該模板設置為全局配置模板。
- 新接入應用根據需求選擇是否應用步驟 1 得到的配置模板。
該機制可確保監控策略的版本化管理和企業級最佳實踐復用。
總結
一個成熟的監控方案是功能、性能、成本三者的平衡,是在對 ARMS 產品以及自身業務深入了解背景下長期實踐下來的結晶。通過配置模板完成這些監控方案的統一管理和復用,一定能助力企業在數字基礎設置穩定性建設方面更上一層樓。
相關鏈接:
[1] 云監控 2.0 控制臺
https://cmsnext.console.aliyun.com/next/home
[2] 接入文檔
[3] 接入文檔
[4] JVM 監控大盤
https://grafana.com/grafana/dashboards/4701-jvm-micrometer/
[5] 探針插件開關配置指南
[6] 持續剖析性能診斷實踐
[7] OT-SDK 自定義指標接入手冊
浙公網安備 33010602011771號