本页面介绍如何解决 Cloud Scheduler 的问题。
Cloud Scheduler 会在每次作业执行开始时和结束时发布日志。您可以检索、查看和分析特定作业的日志,包括 Cloud Scheduler 的审核日志。如需了解详情,请参阅查看日志。
默认情况下,如果 Cloud Scheduler 作业未收到来自其目标服务(即作业请求处理程序)的确认,则该作业会被视为失败。Cloud Scheduler 将根据您配置的指数退避算法重试该作业。
如需了解影响 Google Cloud 服务的突发事件,请参阅 Google Cloud Service Health 信息中心和为 Cloud Scheduler 报告的所有突发事件。
作业因下游服务问题而失败
作业失败可能是由于 Cloud Scheduler 所针对的下游服务(例如 Cloud Run)出现问题,而不是 Cloud Scheduler 本身出现问题。如果符合以下条件,您可以怀疑存在下游服务问题:
- Cloud Scheduler 的权限已正确设置。
- Cloud Scheduler 可以成功访问目标服务。
- Cloud Scheduler 执行日志中的错误消息源自下游服务。
如需解决此问题,请完成以下步骤:
- 直接调用下游服务:验证下游服务是否可以在没有 Cloud Scheduler 的情况下成功调用。如果调用成功,则表明问题很可能是由 Cloud Scheduler 引起的;如果调用失败,则需要进一步调试下游服务。
- 检查目标服务日志:检查目标服务的日志,确定输出的错误,并相应地对这些错误进行问题排查。
- 查找长时间运行的操作:当 Cloud Scheduler 针对长时间运行的操作(超过 30 分钟)返回 HTTP
504错误时,请检查目标服务日志,了解执行是成功还是失败,因为目标服务可能具有更长的请求超时时间。在这种情况下,Cloud Scheduler 会超时,但目标服务不会。
作业失败并显示权限错误
权限控制着哪些主账号可以访问资源以及允许执行哪些操作。配置错误的权限可能会中断作业执行,并导致权限遭拒错误。审核日志会详细记录所有权限更改,以便您确定这些问题的来源。
如果 Cloud Scheduler 作业因权限错误而失败,执行日志可能会显示类似于 "debugInfo":"URL_ERROR-ERROR_OTHER. Original HTTP response code number = 403" 的消息。
如需解决此问题,请完成以下一项或多项验证:
验证授予服务代理的 IAM 角色:Cloud Scheduler 服务代理需要 Cloud Scheduler Service Agent (
roles/cloudscheduler.serviceAgent) 角色。如果没有此角色,Cloud Scheduler 作业会失败。您可以手动向 Cloud Scheduler 服务代理授予该角色。仅当您在 2019 年 3 月 19 日之前启用 Cloud Scheduler API 或移除了 Cloud Scheduler 服务代理角色时,才需要手动授予此角色。 如需了解详情,请参阅授予 Cloud Scheduler 服务代理角色。验证您的服务账号权限:确保附加到作业的服务账号具有调用目标服务的正确权限和范围。这包括目标位于其他项目中的情况,或者目标是中间服务的最终目标的情况。如果目标位于 Google Cloud内,请确认您已向服务账号授予必要的角色。 Google Cloud 中的每项服务都需要特定角色,并且接收服务会自动验证生成的令牌。例如,对于 Cloud Run 和 Cloud Run functions,您必须授予
Cloud Run Invoker角色。当目标位于 Google Cloud之外时,接收服务必须手动验证令牌。如需了解详情,请参阅向 Cloud Scheduler 进行身份验证和对 HTTP 目标使用身份验证。验证是否存在任何 VPC Service Controls 违规行为:VPC Service Controls 是一项 Google Cloud功能,可让您设置安全的边界以防数据渗漏。如需确定错误是否与 VPC Service Controls 相关,请检查您是否已启用 VPC Service Controls 并且是否将其应用于您尝试使用的项目和服务。如需验证项目和服务是否受 VPC Service Controls 保护,请检查资源层次结构中相应级别的 VPC Service Controls 政策。
如需了解问题的范围,您可以从审核日志中检索 VPC Service Controls 错误。
-
在 Google Cloud 控制台中,前往 Logs Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
根据以下条件查询审核日志:
severity="ERROR" AND protoPayload.status.details.violations.type="VPC_SERVICE_CONTROLS"
具体而言,错误消息可能包含以下文本:
Request is prohibited by organization's policyRequest violates VPC Service Controls
如需详细了解在配置 VPC Service Controls 时可能会遇到的问题,请参阅
-