排查问题

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

Trace 界面中没有任何数据

如果您在需要跟踪数据时看不到 Google Cloud 项目中的任何跟踪记录 数据,请尝试执行以下步骤:

  1. 启用 Cloud Trace API。

    启用 API

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

    转到“API 和服务

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

    • 如果标记为 Requests 的列没有列出任何数字信息, 系统便不会向您的 Google Cloud 项目发送任何跟踪记录数据。

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

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

      • 如果写入失败,则授予 服务账号 为身份验证凭据提供 Cloud Trace Agent (roles/cloudtrace.agent)。 此角色包含 cloudtrace.traces.patch 权限,该权限 允许应用将 span 数据写入 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 界面中没有数据

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

    此角色包含 cloudtrace.traces.patch 权限,该权限 允许应用将 span 数据写入 Google Cloud 项目。

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

    • 对于根服务,请尝试更新环境变量, OpenTelemetry 将 traceidratio 采样器与 0.5 的采样率:

      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。未解析的 原因如下:

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

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

如果您始终看到“缺少 span ID”消息,请尝试 以下:

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

    Google Cloud 服务通常会遵循此提示。不过,他们也会 限制其写入轨迹数据的速率。

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