你可以通过比较问题的出现并审查可用的诊断上下文来调查问题。
Issues 检测未捕获异常、失败的调用、Worker 返回的 HTTP 5xx 响应,以及以 error 级别写入或包含 Error 对象或堆栈跟踪的控制台日志。
Issues 检测不需要 Workers Logs 或跟踪。仅在添加自定义应用程序上下文时才需要跟踪。
打开 Issues 概览 ↗,然后选择一个问题。
问题详情页显示故障开始时间、发生频率以及当前状态。
选择一次出现以审查其可用的诊断上下文:
- 检测到的错误以及堆栈跟踪(如有)。
- 与故障相关的日志和跟踪。
- 产生该出现的 Worker 版本。
- 调用和请求详情。
- 附加到活动跟踪 span 的应用程序上下文。
可用上下文取决于故障类型以及该次调用捕获的遥测。
Cloudflare 会自动捕获平台上下文,但不知道哪些应用程序用户、账户或会话是相关的。在每次调用中尽早添加这些标识符,以便在问题发生时附加它们。
你可以使用 tracing.getActiveSpan() 向活动 span 添加属性,或向使用自定义 span API 创建的 span 添加属性。使用任一方法之前,请先启用跟踪。
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);
},
};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;这些属性会与相关出现一起显示。
不要将密钥、访问令牌或敏感请求内容添加到 span 属性、日志或错误消息。按照你的隐私和数据处理策略处理应用程序标识符和个人数据。
| 状态 | 行为 |
|---|---|
Active |
问题未解决。新问题以此状态开始。 |
Resolved |
问题被视为已修复。更新的出现会将状态改回 Active。 |
Ignored |
新出现到达时问题保持忽略。更改状态以再次审查。 |
Issues 不会自动解决。在调查或部署修复后更新状态。在问题被解决之前观察到的延迟出现不会重新打开它。
出现详情保留七天。出现过期后,问题仍会列在列表中。要通过 Wrangler 关闭 Issues,请将 observability.issues.enabled 设为 false 并部署 Worker。Issues 会停止检测新故障。