本文介绍如何将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。