本文介紹如何將OpenTelemetry Trace資料接入ARMS並使用。
接入OpenTelemetry Trace資料
ARMS支援多種方式接入OpenTelemetry Trace資料,您可以將OpenTelemetry Trace資料直接上報至ARMS,或通過OpenTelemetry Collector轉寄。
直接上報
-
結合ARMS Java Agent與OpenTelemetry Java SDK上報Trace資料
v2.7.1.3及以上版本的ARMS Java Agent支援OpenTelemetry Java SDK擴充。您在使用ARMS Java Agent自動擷取萬用群組件Trace資料的同時,還可以通過OpenTelemetry SDK擴充自訂的方法埋點。具體操作,請參見通過OpenTelemetry Java SDK為調用鏈增加自訂埋點。
-
通過OpenTelemetry直接上報Trace資料
您也可以使用OpenTelemetry SDK進行應用埋點,並通過Jaeger Exporter直接上報Trace資料。具體操作,請參見通過OpenTelemetry上報Java應用資料。
通過OpenTelemetry Collector轉寄
通過開源OpenTelemetry Collector轉寄Trace資料
使用開源的OpenTelemetry Collector轉寄Trace資料至ARMS,只需要修改Exporter中的存取點(Endpoint)和鑒權資訊(Token)。
exporters:
otlp:
endpoint: <endpoint>:8090
tls:
insecure: true
headers:
Authentication: <token>
-
將
<endpoint>替換為您上報地區對應的Endpoint,例如:http://tracing-analysis-dc-bj.aliyuncs.com:8090。 -
將
<token>替換為您控制台上擷取的Token,例如:b590lhguqs@3a7*********9b_b590lhguqs@53d*****8301。
OpenTelemetry Trace使用指南
為了更好的發揮OpenTelemetry Trace資料價值,ARMS提供了鏈路詳情、預彙總大盤、Trace Explorer後彙總分析、調用鏈路關聯業務日誌等多種診斷能力。
-
鏈路詳情
在鏈路詳情面板左側可以查看鏈路的介面調用次序與耗時,面板右側展示了詳細的附加資訊和關聯指標,例如資料庫SQL,JVM和Host監控指標等。鏈路詳情頁面展示一條總耗時 1.1s 的調用鏈(含 27 個 Span),左側瀑布圖列出各 Span 的耗時分布,包括 HTTP 要求(
org.apache.http.protocol.HttpRequestExecutor,耗時 19ms–583ms)、MyBatis(4ms–6ms)和 MySQL(1ms–4ms)調用。右側面板顯示選中 Span 的基本資料(Application Name、API Name、IP、Start Time),以及 Metric 標籤頁下的 JVM 監控指標:Instantaneous GC Times、Instantaneous GC Duration、Stack Memory Details 和 JVM Threads,每個圖表均標註了 Trace 所在時間點。 -
預彙總大盤
ARMS基於OpenTelemetry Trace資料提供了多種預彙總指標大盤,包括應用總覽,介面調用,資料庫調用等。更多資訊,請參見應用總覽。

-
Trace Explorer後彙總分析
針對OpenTelemetry Trace資料,ARMS提供了靈活的多維篩選與後彙總分析能力,例如查詢特定應用的異常鏈路。還可以根據IP、介面等維度對Trace資料進行彙總。更多資訊,請參見調用鏈分析。
Trace Explorer 介面包含搜尋欄(例如
serviceName:"mall-gateway")、左側快捷篩選面板(狀態、耗時、介面名稱、主機地址)、上方統計圖表(調用次數、錯誤數、平均耗時),以及 列表、散佈圖、全鏈路彙總、全鏈路拓撲、錯/慢Trace分析 等分析視圖。 -
調用鏈路關聯業務日誌
ARMS支援將OpenTelemetry Trace與業務日誌相關聯,從應用介面角度排查業務異常問題。更多資訊,請參見通過調用鏈路和日誌分析定位業務異常問題。
在SLS日誌查詢分析介面中,通過 traceId 關聯查詢相關日誌條目。樣本中根據 traceId
0bc0594d15996317885782...過濾出多條日誌,其中包含 WARN 層級日誌(PrometheusServiceImpl 提示prometheus check input param success from db)和 INFO 層級日誌(RegisterPromClusterServlet 註冊失敗),異常根因為java.lang.RuntimeException: 建立grafana檔案夾失敗,調用棧涉及 GrafanaConfigService 和 PrometheusServiceImpl。