通过OpenTelemetry接入ARMS

更新时间:
复制 MD 格式

本文介绍如何将OpenTelemetry Trace数据接入ARMS并使用。

接入OpenTelemetry Trace数据

ARMS支持多种方式接入OpenTelemetry Trace数据,您可以将OpenTelemetry Trace数据直接上报至ARMS,或通过OpenTelemetry Collector转发。

直接上报

  • 结合ARMS Java AgentOpenTelemetry 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,JVMHost监控指标等。链路详情页面展示一条总耗时 1.1s 的调用链(含 27 个 Span),左侧瀑布图列出各 Span 的耗时分布,包括 HTTP 请求(org.apache.http.protocol.HttpRequestExecutor,耗时 19ms–583ms)、MyBatis(4ms–6ms)和 MySQL(1ms–4ms)调用。右侧面板显示选中 Span 的基本信息(Application NameAPI NameIPStart Time),以及 Metric 标签页下的 JVM 监控指标:Instantaneous GC Times、Instantaneous GC Duration、Stack Memory Details 和 JVM Threads,每个图表均标注了 Trace 所在时间点。

  • 预聚合大盘

    ARMS基于OpenTelemetry Trace数据提供了多种预聚合指标大盘,包括应用总览,接口调用,数据库调用等。更多信息,请参见应用总览

    Overall Analysis tab

  • 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。