本文档介绍了在使用跟踪记录探索器页面或旧版跟踪记录探索器页面时如何排查问题:
已知问题
本部分列出了已知问题:
使用 Telemetry API 写入到您的 Google Cloud 项目的 span 无法通过旧版 Trace 探索器页面使用。如需查看这些 span,请使用默认的 Trace 探索器页面。
使用 Telemetry API 写入到 Google Cloud 项目的 span 无法通过 Cloud Trace API 进行访问。例如,如果您尝试列出这些轨迹,该命令会失败并显示
404 Not Found
错误。
排查 Trace 探索器页面方面的问题
本部分介绍了如何排查使用轨迹浏览器页面时遇到的问题。
Trace 探索器页面中没有任何数据
您正在使用 Trace 探索器页面,但当您预期存在跟踪记录数据时,却无法在 Google Cloud 项目中查看任何跟踪记录。
请尝试按照以下步骤操作:
验证 Cloud Trace API 是否已启用,以及数据是否正在写入您的项目:
在 Google Cloud 控制台中,前往已启用的 API 和服务页面:
如果列出了 Cloud Trace API,请继续执行下一步。 否则,请启用该 API。
如需启用该 API,请点击启用 API 和服务,搜索“Cloud Trace API”,选择相应选项,然后点击启用。
在已启用的 API 和服务页面上,找到标有 Cloud Trace API 的行。
如果标记为错误的列列出了非零值,则表示通过 Cloud Trace API 读取或写入跟踪数据时出现错误。如需详细了解错误来源,请选择 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 角色。
请求列列出了发送到 Cloud Trace API 的请求数。如果此列为零,则表示没有通过相应 API 发送任何轨迹数据。
App Engine、Cloud Run 和 Cloud Run functions 会发送跟踪数据,而无需使用 Cloud Trace API。如果您仅使用这些服务,请前往下一步。
如果您的应用通过 Cloud Trace API 发送跟踪数据,但“请求”列显示为零,请检查您的应用和代理,验证它们是否已配置为将跟踪记录发送到正确的项目。
在 Trace 探索器页面中,验证 Trace 存储是否已初始化:
-
在 Google Cloud 控制台中,前往 Trace 探索器页面:
您也可以使用搜索栏查找此页面。
如果未初始化跟踪记录存储空间,则 Trace 探索器页面会显示一个包含以下文字的横幅:
Trace storage is not initialized in this project. Enable trace storage to begin collecting trace data.
如需初始化 Trace 存储空间,请点击横幅中的启用。初始化通常会在几分钟内完成。
初始化成功后,系统会显示一个通知横幅。 Trace 会提取过去一小时内发送的之前存储在缓冲区中的轨迹数据。当数据开始显示在轨迹探索器中时,您可以稍后刷新。
如果您看到指示初始化失败的错误消息,则需要 Google Cloud 支持团队成员手动解决此问题。点击提交支持请求即可开始此流程。
-
验证 Trace 探索器页面是否正在当前项目中搜索跟踪记录数据。在工具栏中,前往范围元素,展开优化范围菜单,选择当前项目,然后选择应用。
搜索特定轨迹失败
您可以在 Trace 探索器页面中输入跟踪记录 ID。找不到轨迹,并显示类似如下所示的消息:
The select trace with ID abcde does not exist or is older than 30 days and has been deleted per our retention policy.
如需解决此失败问题,请尝试执行以下操作:
验证与轨迹 ID 相关联的时间戳是否在保留期限内。
确定存储轨迹的 Google Cloud 项目,并确保 Google Cloud 控制台中的资源选择器选择了此项目。 默认情况下,Trace 探索器页面只能访问所选项目中存储的跟踪记录数据。
Trace 探索器页面中缺少旧数据
您使用的是 Trace 探索器页面,并且可以查看近期数据,但当您将时间范围选择器设置为 30 天或更大的值时,系统不会显示较旧的数据。
Trace 探索器页面不会显示时间段长于 Cloud Trace 数据保留期限(30 天)的数据。
如果时间范围选择器设置为 30 天或更短的时间范围,则缺失的数据表示 Trace 探索器页面查询的数据库的创建时间比您设置的时间范围更近。例如,如果您将此值设置为 20 天,但只能看到最近 10 天的数据,则表示数据库是在 10 天前创建的。此外,此数据库仅包含在创建后发送到 Google Cloud 项目的轨迹。
如需查看和分析旧版跟踪记录数据,请切换到旧版 Trace 探索器页面。此页面从与 Trace 探索器页面不同的数据库读取轨迹和 span 数据。
轨迹中缺少 span
您打开 Trace 探索器页面,然后选择要查看的 span。 详情弹出式菜单会显示轨迹,但缺少一些 span。
轨迹可能因以下原因而缺失:
Trace 探索器页面未搜索存储跟踪记录 span 数据的所有 Google Cloud 项目。
您在存储相应轨迹的 span 数据的 Google Cloud 项目中的 IAM 角色不包含查看轨迹数据所需的权限。
存在插桩问题。例如,只有轨迹中的部分 span 被发送到您的 Google Cloud 项目。
如需解决这些问题,请执行以下操作:
在旧版 Trace 探索器页面中,确定轨迹是否完整:
在轨迹的详细信息弹出式菜单中,将轨迹 ID 复制到剪贴板。
前往旧版 Trace 探索器页面:
将轨迹 ID 粘贴到轨迹 ID 字段中。
跟踪记录详情页面会更新,并列出存储相应跟踪记录 span 的项目。
如果跟踪记录在旧版 跟踪记录探索器页面中完成,请返回到跟踪记录探索器页面,并将范围元素设置为列出您在上一步中确定的所有项目的跟踪记录范围。这些项目存储了所选轨迹的 span。
如果没有包含您在上一步中确定的项目的轨迹范围,请创建或修改现有轨迹范围。如需了解详情,请参阅创建和管理跟踪记录范围。
如果旧版 Trace 探索器页面中显示的轨迹不完整,则可能是 span 未被记录,或者您在存储 span 数据的项目上没有 Cloud Trace 用户角色 (
roles/cloudtrace.user
)。
您没有查看轨迹数据所需的权限
您正在查看 Trace 探索器页面,并看到以下通知:
You don't have the required permissions to view trace data for one or more projects listed in the trace scope.
如需解决此消息,请在工具栏中执行以下操作:
- 展开范围元素,然后确定所选轨迹范围。
- 在优化范围弹出式菜单中,选择管理范围。
- 找到您在第一步中确定的轨迹范围,然后展开详细信息以查看 Google Cloud 项目的列表。
- 对于跟踪记录范围内的每个 Google Cloud 项目,请验证您是否具有 Cloud Trace User (
roles/cloudtrace.user
) 角色。如果您在某个项目中没有该角色,请让管理员或项目所有者向您授予该角色。
跟踪记录存储空间初始化失败
您尝试通过点击 Trace Explorer 中显示的横幅上的启用来初始化轨迹存储空间,但看到以下错误:
Initializing trace storage has failed for an unexpected reason. Please file a support ticket for assistance.
如果存储空间初始化失败,则 Google Cloud 支持团队成员必须手动解决此问题。如需联系支持团队,请点击提交工单。
排查旧版 Trace 探索器页面的问题
本部分介绍了如何排查使用旧版 跟踪浏览器页面时遇到的问题。
旧版界面中没有任何数据
您使用的是旧版 Trace 探索器页面,并且在预期存在跟踪记录数据时,无法在 Google Cloud 项目中查看任何跟踪记录。
如需解决此失败问题,请尝试执行以下步骤:
-
Enable the Cloud Trace API.
在 Google Cloud 控制台中,前往 API 和服务页面:
找到标有 Cloud Trace API 的行后,请尝试执行以下操作:
如果标记为请求的列未列出任何数值信息,则表示没有跟踪记录数据发送到您的 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 角色。
旧版界面中没有已部署应用的轨迹数据
您已部署一个使用 Cloud Trace API 将数据发送到您的 Google Cloud 项目的应用,但系统未收集跟踪记录数据。
请尝试以下操作:
如果您在 Google Cloud 控制台的旧版 Trace 探索器页面中没有看到任何数据,请按照旧版 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 进行采样,否则通常无法强制对请求进行端到端跟踪,因为端到端请求中的每个组件都会做出自己的采样决定。不过,您可以通过在跟踪标头中添加
sampled
标志(并将此标志设置为true
)来影响此决定。此设置用于向子组件提示对请求进行抽样。如需详细了解跟踪标头,请参阅上下文传播协议。
跟踪记录中缺少 span ID 消息
您的轨迹包含“缺少 span ID”消息。
在分布式跟踪系统中,不完整的轨迹是预期现象。如果抽样的 span 包含对尚未收到的另一个 span 的引用,则相应轨迹是不完整的。出现未解决的引用的原因如下:
- 未对引用的 span 进行抽样。
- 所引用的 span 已被抽样,但 Cloud Trace 尚未收到该 span,或者 Cloud Trace 已收到该 span 但尚未存储。
当您查看不完整的跟踪记录时,Cloud Trace 会在跟踪记录详情窗格中显示“缺少 span ID”消息。
如果您一直看到“缺少 span ID”消息,请尝试以下操作:
对于您管理的组件,请确保它们在存在此字段时遵守并传播标头的
sampled
标志。此设置用于向子组件提示对请求进行抽样。如需详细了解跟踪标头,请参阅上下文传播协议。Google Cloud 服务通常会遵循此提示。不过,它们也会限制写入轨迹数据的速率。
如果您使用的是 Cloud Service Mesh,请务必遵循有关传播这些配置的跟踪上下文的指南。如需获取 Cloud Service Mesh 指南,请参阅跟踪上下文传播。
将 Go 应用更新为使用 OpenTelemetry 后,没有跟踪记录数据
您的应用依赖于客户端库来捕获跟踪记录,但在更新应用以使用 OpenTelemetry 后,您不再看到 Cloud Trace 数据。
由于某些 Go 版 Cloud 客户端库与 OpenCensus 集成,因此您必须使用 OpenCensus Bridge。如需详细了解该桥接解决的问题,请参阅 OpenCensus Bridge。
如需了解 Go 版 Cloud 客户端库的更新,请参阅问题 #4237。