排查问题

本页包含问题排查信息, Trace。

Trace 界面中没有任何数据

如果您在预期跟踪记录数据存在时无法查看 Google Cloud 项目中的任何跟踪记录,请尝试按以下步骤操作:

  1. Enable the Cloud Trace API.

    Enable the API

  2. 在 Google Cloud 控制台中,前往 API 和服务页面:

    前往 API 和服务

    找到标记为 Cloud Trace API 的行后,请尝试执行以下操作:

    • 如果标记为请求的列未列出任何数值信息,则表示没有跟踪记录数据发送到您的 Google Cloud 项目。

      要解决此问题,请检查您的应用和代理,确保它们 配置为将跟踪记录发送到正确的项目。

    • 依次选择 Cloud Trace API指标标签页,然后找到 标有错误数(按 API 方法)的图表:

      • 如果写入失败,请为提供身份验证凭据的服务账号授予 Cloud Trace Agent (roles/cloudtrace.agent) 角色。此角色包含 cloudtrace.traces.patch 权限,可让应用将跨度数据写入 Google Cloud 项目。

        如需了解详情,请参阅 Cloud Trace IAM 角色

      • 如果读取失败,请确保您的 IAM 该角色拥有该角色中的权限 Cloud Trace 用户 (roles/cloutrace.user)。对于列表 该角色的所有权限 请参阅 Cloud Trace IAM 角色

将 Go 应用更新为使用 OpenTelemetry 后,没有跟踪记录数据

您的应用依靠客户端库来捕获轨迹, 更新应用以使用 OpenTelemetry, Cloud Trace 数据。

由于某些适用于 Go 的 Google 客户端库已集成到 OpenCensus,您必须使用 OpenCensus 桥接器。 如需详细了解迁移桥所解决的问题,请参阅 OpenCensus Bridge

如需了解适用于 Go 的 Google 客户端库的更新,请参阅问题 4237

没有已部署应用的轨迹数据

您已部署了一个应用,该应用使用 Cloud Trace API,但不会收集跟踪记录数据。

请尝试以下操作:

  • 如果您在 Google Cloud 控制台的 Trace 探索器页面中没有看到任何数据,请按照标题为Trace 界面中没有任何数据的部分中的步骤操作。

  • 如果应用未部署在 Google Cloud 上,或者它使用服务账号提供身份验证凭据,请确保已向该服务账号授予 Cloud Trace Agent (roles/cloudtrace.agent) 角色。

    此角色包含 cloudtrace.traces.patch 权限,可让应用将跨度数据写入 Google Cloud 项目。

  • 如果应用依赖于 OpenTelemetry,请执行以下操作:

    • 对于根服务,请尝试更新环境变量,以便 OpenTelemetry 使用采样率为 0.5traceidratio 采样器:

      export OTEL_TRACES_SAMPLER="traceidratio"
      export OTEL_TRACES_SAMPLER_ARG="0.5"
      
    • 对于其他所有服务,请将 OTEL_TRACES_SAMPLER 环境变量未设置以使用默认采样器 parentbased_always_on。 默认设置表示 span 的抽样决策沿用自 父 span(如果存在)。如果父 span 不存在,则 对 span 采样。

    除非您的应用始终对每个 span 进行采样, 通常情况下,系统无法强制对请求进行端到端跟踪 因为端到端请求中的每个组件 抽样决策。不过,您可以通过向轨迹标头添加 sampled 标志(并将此标志设置为 true)来影响此决定。此设置是对子组件进行请求抽样的提示。如需详细了解跟踪标头,请参阅用于上下文传播的协议

轨迹中缺少 span ID 消息

您的跟踪记录包含“缺少 span ID”消息。

在分布式跟踪系统中,不完整的轨迹是正常现象。如果采样的 span 包含对未收到的其他 span 的引用,则轨迹不完整。未解析的 原因如下:

  • 未对引用的跨度进行抽样。
  • 引用的 span 已进行采样,但尚未被 Cloud Trace 接收 或者 span 已被接收但未存储。

在您查看不完整的跟踪记录时,Cloud Trace 会显示 消息“缺少 span ID”“跟踪详情”窗格上

如果您一直看到“缺少 span ID”消息,请尝试以下操作:

  • 对于您管理的组件,请确保它们尊重和 传播标头的 sampled 标志标记时, 字段。此设置是对子级组件进行请求抽样的提示。如需详细了解跟踪标头,请参阅用于上下文传播的协议

    Google Cloud 服务通常会遵循此提示。不过,它们也会限制跟踪数据的写入速率。

  • 如果您使用的是 Cloud Service Mesh,请务必遵循 来传播这些配置的跟踪上下文。如需 Cloud Service Mesh 指南,请参阅跟踪上下文传播