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版本後資料上報量增加問題說明
從3.x探針升級到4.x探針後,在某些使用情境下,可能導致指標上報量增加,具體情況如下:
無入口情境下的內部調用產生的Span記錄導致Span上報量、指標上報量增加。
線程池監控支援使用者自訂線程池導致指標量上漲。
串連池監控支援更多串連池類型導致指標量上漲。
介面調用頁面的介面上遊和介面下遊指標在上下遊為非同步呼叫時會因為4.x版本支援非同步自動透傳導致指標量增加。
外掛程式用法支援更加全面導致指標量上漲,典型的是Lettuce外掛程式的用法支援更加全面。