Trace 界面中没有任何数据
如果您预计会出现跟踪数据,但无法查看 Google Cloud 项目中的任何跟踪记录,请尝试执行以下步骤:
-
启用 Cloud Trace API。
在 Google Cloud 控制台中,前往 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 角色。
如果读取失败,请确保您在 Google Cloud 项目中的 IAM 角色包含 Cloud Trace User 角色 (
roles/cloutrace.user
) 的权限。如需查看此角色的权限列表,请参阅 Cloud Trace IAM 角色。
更新 Go 应用以使用 OpenTelemetry 后没有轨迹数据
您的应用依赖客户端库来捕获轨迹,并且在将应用更新为使用 OpenTelemetry 后,您不会再看到 Cloud Trace 数据。
由于某些适用于 Go 的 Google 客户端库已与 OpenCensus 集成,因此您必须使用 OpenCensus Bridge。如需详细了解该桥所解决的问题,请参阅 OpenCensus Bridge。
如需了解更新 Go 版 Google 客户端库的信息,请参阅问题 4237。
已部署应用没有跟踪记录数据
您已部署一个应用,该应用使用 Cloud Trace API 将数据发送到 Google Cloud 项目,但尚未收集跟踪记录数据。
请尝试以下操作:
如果您在 Google Cloud 控制台的 Trace Explorer 页面中看不到任何数据,请按照标题为 Trace 界面中无数据部分中的步骤操作。
如果应用未部署在 Google Cloud 上,或者它使用服务帐号提供身份验证凭据,请确保已为服务帐号授予 Cloud Trace Agent (
roles/cloudtrace.agent
) 角色。此角色包含
cloudtrace.traces.patch
权限,该权限允许应用将 span 数据写入 Google Cloud 项目。如果应用依赖于 OpenTelemetry,请执行以下操作:
对于根服务,请尝试更新环境变量,以便 OpenTelemetry 使用采样率为
0.5
的traceidratio
采样器:export OTEL_TRACES_SAMPLER="traceidratio" export OTEL_TRACES_SAMPLER_ARG="0.5"
对于所有其他服务,请将
OTEL_TRACES_SAMPLER
环境变量保持未设置状态,以使用parentbased_always_on
这一默认采样器。默认设置意味着 span 的采样决策将继承自其父级 span(如果存在此类 span)。如果父 span 不存在,则对该 span 进行采样。
除非您的应用始终对每个 span 采样,否则通常无法强制对请求进行端到端跟踪,因为端到端请求中的每个组件都会做出自己的采样决策。不过,您可以通过向跟踪记录标头添加
sampled
标志并将此标志设置为true
来影响这一决定。此设置用于提示子组件对请求进行采样。 如需详细了解跟踪记录标头,请参阅上下文传播协议。
跟踪记录中缺少 span ID 消息
您的跟踪记录包含“缺少 span ID”消息。
在分布式跟踪系统中,跟踪数据不完整。如果采样 span 包含对尚未收到的另一个 span 的引用,则表示跟踪记录不完整。出现未解析引用的原因可能如下:
- 未对引用的 span 进行抽样。
- 引用的 span 已经过采样,但尚未被 Cloud Trace 接收,或该 span 已被接收但未存储。
当您查看不完整的跟踪记录时,Cloud Trace 会在跟踪记录详情窗格中显示“缺少 span ID”消息。
如果您始终看到“缺少 span ID”消息,请尝试以下操作:
对于您管理的组件,请确保它们遵循并传播标头的
sampled
标志(如果此字段存在)。此设置用于提示子组件对请求进行采样。如需详细了解跟踪记录标头,请参阅上下文传播协议。Google Cloud 服务通常会遵循此提示。但是,它们也限制了写入轨迹数据的速率。
如果您使用的是 Cloud Service Mesh,请确保遵循有关为这些配置传播跟踪上下文的指南。如需查看 Cloud Service Mesh 指南,请参阅跟踪上下文传播。