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插件的用法支持更加全面。