问题排查

本页面介绍如何解决在使用 Eventarc 时可能遇到的问题。

有关您也可能会遇到的特定目标问题,请参阅以下内容的问题排查:

Eventarc 提供方

本部分提供了针对事件来源(提供方)出现的问题的问题排查提示。

提供方不存在。

检查提供方是否存在,以及您是否已正确指定触发器过滤条件

提供方生成了事件,但目标未收到事件

检查您是否过滤了来自目标目标支持区域中提供方的事件。如需了解详情,请参阅 Eventarc 支持的位置了解 Eventarc 位置

触发器未传送事件

  1. 验证提供方是否生成了事件。检查 Cloud Audit Logs 并确保受监控服务正在写入日志。如果记录了日志,但事件未被传送,请与支持团队联系

  2. 验证存在与触发器同名的 Pub/Sub 主题。

    1. 如需列出所有位置的触发器,请运行以下命令:

      gcloud eventarc triggers list --location=-
      
    2. 如需列出 Pub/Sub 主题,请运行以下命令:

      gcloud pubsub topics list
      

      验证 Pub/Sub 主题名称包含已创建的触发器的名称。如果缺少 Pub/Sub 主题,请在创建触发器时创建主题

    3. 如需描述触发器并检测触发器的条件的任何问题,请运行以下命令:

      gcloud eventarc triggers describe TRIGGER \
        --location=LOCATION
      

      替换以下内容:

      • TRIGGER:触发器的 ID 或完全限定标识符。
      • LOCATION:Eventarc 触发器的位置。
    4. 上一条命令返回触发器的条件。如果 Pub/Sub 主题出现问题,则会返回以下条件之一:

      conditions:
      transport.pubsub.topic:
        code: NOT_FOUND
        message: Pub/Sub topic not found. Try recreating the trigger.

      conditions:
      transport.pubsub.topic:
        code: UNKNOWN
        message: Pub/Sub topic status is unknown. Try requesting the trigger description again.

      如果适用,请执行以下操作:

      • 如果返回 Pub/Sub topic not found,请为特定提供方、事件类型和 [目的地](/eventarc/docs/targets#triggers) 重新创建触发器,然后创建主题。

      • 如果返回 Pub/Sub topic status is unknown,请再次运行该命令以描述触发器。

      • 如果问题仍然存在,请与支持团队联系。如需了解详情,请参阅管理触发器

  3. 验证 Pub/Sub 主题的运行状况:

    1. 验证 Pub/Sub 主题配置。转到主题页面。

      打开“主题”

    2. 使用 topic/send_message_operation_count 指标监控消息是否发布到主题。如果消息未发布到主题,请检查 Cloud Audit Logs 并确保受监控服务正在发出日志。如果记录了日志,但事件未被传送,请与支持团队联系

    3. 使用按 response_code 分组的 subscription/push_request_count 指标监控消息是否成功推送。如果报告了推送错误,请检查服务日志。如果接收端点返回非“正常”状态代码,则表示 Cloud Run 代码未按预期工作,您必须与支持团队联系

Eventarc 触发器

本部分提供触发器问题的问题排查提示。

权限遭拒错误

  • 如果您遇到 Failed to load service details: permission denied 错误,请确认触发器权限已正确配置,以及 Pub/Sub 服务账号已获得 iam.serviceAccountTokenCreator 角色。如需了解详情,请参阅访问权限控制

  • 如果在尝试创建触发器时遇到以下错误,请等待几分钟(最多 7 分钟),然后再次尝试创建触发器:

    Permission denied while using the Eventarc Service Agent. If you recently
    started to use Eventarc, it may take a few minutes before all necessary
    permissions are propagated to the Service Agent. Otherwise, verify that it has
    Eventarc Service Agent role.
    

    服务代理充当特定项目的给定 Google Cloud 服务的身份。如需了解详情,请参阅服务代理并查看 Eventarc 服务代理角色 (roles/eventarc.serviceAgent) 的权限

    如需验证您的 Eventarc 服务代理是否存在于您的 Google Cloud 项目中以及是否具有必要的角色,请完成以下步骤:

    1. 在 Google Cloud 控制台中,转到 IAM 页面。

      进入 IAM

    2. 权限标签页上,选中包括 Google 提供的角色授权复选框。

    3. 在主账号列表中,找到 Eventarc 服务代理,它们使用以下格式:

      service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

    4. 验证服务代理是否具有 Eventarc Service Agent 角色。如果服务代理没有该角色,请授予角色

  • 如果您尝试使用跨项目服务账号,并且遇到 iam.serviceAccounts.getAccessTokeniam.serviceAccounts.actAs 的权限遭拒错误,或者收到类似于 ...cross-project service accounts are disabledFailed to impersonate... 的错误消息,请确认权限已正确配置。如需了解详情,请参阅使用跨项目服务账号

使用 Eventarc 时产生意外费用

创建触发器时,请检查配置的过滤条件是否会导致无限期触发触发器。为了避免您的账单上出现超支的费用,您可以使用 Google Cloud 的结算控制台设置预算和提醒。如需了解详情,请参阅创建预算