Trace 界面中没有任何数据
如果预计会显示跟踪数据,却无法在 Google Cloud 项目中查看任何跟踪记录,请尝试执行以下步骤:
-
在 Google Cloud 控制台的导航面板中,选择 API 和服务,点击启用 API 和服务,然后启用 Cloud Trace API:
如果系统显示 API 已启用,则表示此 API 已经启用。如未显示,请点击启用按钮。
在工具栏中,点击 menu 导航菜单,然后选择 API 和服务。如果 Cloud Trace API 行没有列出 Requests 列、Errors 列或其他列的任何数值,则表示没有任何跟踪请求到达您的 Google Cloud 项目。检查您的应用和代理,确保它们已配置为将跟踪记录发送到正确的项目。
如需查看有关 API 用量的详细信息,请点击 Cloud Trace API,然后选择指标标签页。
如需缩小错误来源的范围,请使用凭据和方法过滤条件,并查看您的选择对错误(按 API 方法)图表的影响:
如果所有写入操作都失败,请确保您的服务账号有权访问 Cloud Trace Agent 角色。此角色包含
cloudtrace.traces.patch
权限。如需了解详情,请参阅 Cloud Trace IAM 角色。如果读取失败,请确保您有权访问此 Google Cloud 项目的 Cloud Trace User 角色。如需查看此角色的完整权限列表,请参阅 Cloud Trace IAM 角色。
将 Go 应用更新为使用 OpenTelemetry 后,没有跟踪记录数据
您的应用依赖客户端库来捕获跟踪记录,并且在更新应用以使用 OpenTelemetry 后,您不会再看到 Cloud Trace 数据。
由于某些适用于 Go 的 Google 客户端库已与 OpenCensus 集成,因此您必须使用 OpenCensus Bridge。如需详细了解网桥解决的问题,请参阅 OpenCensus Bridge。
如需了解 Go 版 Google 客户端库的更新,请参阅问题 4237。
已部署的应用没有轨迹数据
您已使用 OpenTelemetry 部署了应用并对其进行插桩 (instrument) 处理以收集轨迹数据,但系统未收集轨迹数据。
对于根服务,请尝试更新环境变量,以便 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 服务通常会遵循此提示。但是,它们也会限制写入轨迹数据的速率。
如果您使用的是 Anthos Service Mesh,请务必遵循传播这些配置的跟踪上下文的指南。如需查看 Anthos Service Mesh 指南,请参阅跟踪上下文传播。