ARMS 4.x及之後版本探針基於OpenTelemetry Java Agent重新構建,全面擁抱開源,100%覆蓋老探針功能,但是對部分功能有一定細微調整。本文介紹新版本探針的變動點和影響,並說明資料上報增量問題。
變動的功能點和影響
預設關閉對Spring託管的Bean方法埋點,目前只會針對Controller的方法埋點。
可能的風險:
升級後調用鏈方法棧中無法看到@Service、@Component註解的類方法。
在@Service、@Component等註解的類方法中拋出的異常無法被監控到。
線程池監控和串連池監控指標名調整,詳情請參見線程池和串連池監控。
可能的風險:
如果已在應用監控警示規則中配置線程池監控警示,探針升級後,需要重新設定警示規則。
在建立應用監控警示規則頁面選擇指標類型為新版線程池監控。

如果已根據線程池指標配置自訂大盤,探針升級後大盤資料為空白。
指標量增加導致隨用隨付費用增加。
訊息延遲監控指標名調整為arms_mq_delay_seconds。
可能的風險:如果已根據訊息延遲指標配置自訂大盤,探針升級後大盤資料為空白。
非同步呼叫Trace上下文自動透傳不用配置包名。
RabbitMQ無需自訂消費者、Kafka無需自訂消費方法(已經定義無影響)。
不再支援通過
MDC.get("EagleEye-TraceID")方式擷取TraceID,但是日誌關聯TraceID不受影響。可能的風險:通過
MDC.get("EagleEye-TraceID")方式擷取的TraceID為空白。無入口情境下內部調用會產生Span。
可能的風險:Span數量增長導致隨用隨付費用增加。
分位元統計從基於Prometheus的Summary演算法改為基於線性插值的桶分布方法。
可能的風險:在實際耗時分布和當前分桶差異較大時,分位元指標會不準確。
SpanStatus狀態對齊開源。在開源OpenTelemetry標準中,HTTP請求在響應碼為4xx、5xx的情境下會被標記為error,其餘情況標記為unset(4.x之前版本戳記為ok)。
升級至4.x探針後,TraceId會被強制要求為32位字元,和舊版本前端監控不相容,建議重新接入至新版使用者體驗監控。
4.1.12及之前版本探針當前和JDK 21虛擬線程不相容,ARMS計劃在4.3.x版本完全相容。如果業務強依賴虛擬線程,建議使用3.x探針版本。
使用arms-sdk在spring-cloud-gateway中通過filter方式增加baggage情境,當探針升級到4.2.x版本並在自訂配置中開啟spring-bean外掛程式後,baggage透傳功能不生效。
升級4.x版本後資料上報量增加問題說明
從3.x探針升級到4.x探針後,在某些使用情境下,可能導致指標上報量增加,具體情況如下:
無入口情境下的內部調用產生的Span記錄導致Span上報量、指標上報量增加。
線程池監控支援使用者自訂線程池導致指標量上漲。
串連池監控支援更多串連池類型導致指標量上漲。
介面調用頁面的介面上遊和介面下遊指標在上下遊為非同步呼叫時會因為4.x版本支援非同步自動透傳導致指標量增加。
外掛程式用法支援更加全面導致指標量上漲,典型的是Lettuce外掛程式的用法支援更加全面。
4.x探針為解決線程分析線上程數較多情境下的效能問題,對其中的資料擷取方式和儲存方式進行了調整,相比於3.x探針,線程分析開啟後會額外增加少量以
arms_grouped_thread為首碼的指標,從而產生額外的資料,如需關閉相關功能,可參考線程分析文檔進行關閉。MQ訊息批量消費從每一批消費記錄一個Span變為該批次訊息中每一條訊息記錄一個Span。當每批消費訊息較多時,會導致MQ相關Span上報量大幅度增加。該功能為合理調整,如果對上報量較為敏感建議調整採樣率或者關閉MQ相關外掛程式。