跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

调查问题

最后更新 查看 MarkdownAgent 设置

你可以通过比较问题的出现并审查可用的诊断上下文来调查问题。

检测到的故障

Issues 检测未捕获异常、失败的调用、Worker 返回的 HTTP 5xx 响应,以及以 error 级别写入或包含 Error 对象或堆栈跟踪的控制台日志。

Issues 检测不需要 Workers Logs 或跟踪。仅在添加自定义应用程序上下文时才需要跟踪。

审查问题详情

打开 Issues 概览 ↗,然后选择一个问题。

问题详情页显示故障开始时间、发生频率以及当前状态。

选择一次出现以审查其可用的诊断上下文:

  • 检测到的错误以及堆栈跟踪(如有)。
  • 与故障相关的日志和跟踪。
  • 产生该出现的 Worker 版本。
  • 调用和请求详情。
  • 附加到活动跟踪 span 的应用程序上下文。

可用上下文取决于故障类型以及该次调用捕获的遥测。

问题详情,显示已处理的 RangeError、堆栈跟踪、出现次数图表和目标。

添加应用程序上下文

Cloudflare 会自动捕获平台上下文,但不知道哪些应用程序用户、账户或会话是相关的。在每次调用中尽早添加这些标识符,以便在问题发生时附加它们。

你可以使用 tracing.getActiveSpan() 向活动 span 添加属性,或向使用自定义 span API 创建的 span 添加属性。使用任一方法之前,请先启用跟踪。

src/index.jsjs
import { tracing } from "cloudflare:workers";

export default {
	async fetch(request) {
		const { userId, accountId, sessionId } = await getAuthDetails(request);
		const span = tracing.getActiveSpan();

		span?.setAttribute("user.id", userId);
		span?.setAttribute("account.id", accountId);
		span?.setAttribute("session.id", sessionId);

		return handleRequest(request);
	},
};
src/index.tsts
import { tracing } from "cloudflare:workers";

export default {
	async fetch(request: Request): Promise<Response> {
		const { userId, accountId, sessionId } = await getAuthDetails(request);
		const span = tracing.getActiveSpan();

		span?.setAttribute("user.id", userId);
		span?.setAttribute("account.id", accountId);
		span?.setAttribute("session.id", sessionId);

		return handleRequest(request);
	},
} satisfies ExportedHandler;

这些属性会与相关出现一起显示。

问题上下文,显示用户、账户和会话 ID,以及执行轨迹和调用元数据。

不要将密钥、访问令牌或敏感请求内容添加到 span 属性、日志或错误消息。按照你的隐私和数据处理策略处理应用程序标识符和个人数据。

问题状态

状态 行为
Active 问题未解决。新问题以此状态开始。
Resolved 问题被视为已修复。更新的出现会将状态改回 Active。
Ignored 新出现到达时问题保持忽略。更改状态以再次审查。

Issues 不会自动解决。在调查或部署修复后更新状态。在问题被解决之前观察到的延迟出现不会重新打开它。

保留

出现详情保留七天。出现过期后,问题仍会列在列表中。要通过 Wrangler 关闭 Issues,请将 observability.issues.enabled 设为 false 并部署 Worker。Issues 会停止检测新故障。

这篇文档对您有帮助吗?