排查通知缺失问题

本页面介绍了您可能无法按预期接收通知的原因,并针对这些情况提供了可能的补救措施。

未收到通知

如果您未能通过任何已配置的通知渠道收到任何通知,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Logs Explorer 页面:

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择相应的 Google Cloud 项目。
  3. 查询有关通知渠道事件的日志:

    1. 展开日志名称菜单,然后选择 notification_channel_events
    2. 展开严重级别菜单,然后选择错误
    3. 可选:如需选择自定义时间范围,请使用时间范围选择器。
    4. 点击运行查询

    上述步骤会创建以下查询:

    resource.type:"stackdriver_notification_channel"
    logName="projects/PROJECT_ID/logs/monitoring.googleapis.com%2Fnotification_channel_events"
    severity=ERROR
    

    摘要行和 jsonPayload 字段通常包含失败信息。例如,发生网关错误时,摘要行会包含“failed with 502 Bad Gateway”。

未收到 Webhook 通知

本部分适用于您未能通过已配置的 webhook 通知渠道收到通知的情况。

专用端点

如果您有专用端点,请将 Pub/Sub 通知与针对相应通知主题的拉取订阅结合使用。您不能将 webhook 通知与专用端点搭配使用。

配置 Pub/Sub 通知渠道时,突发事件通知将发送到具有 Identity and Access Management 控制的 Pub/Sub 队列。任何可以查询或监听 Pub/Sub 主题的服务都可以使用这些通知。例如,在 App Engine、Cloud Run 或 Compute Engine 虚拟机上运行的应用可以使用这些通知。

如果您使用拉取订阅,系统会向 Google 发送请求,等待消息到达。这些订阅需要访问 Google,但不需要防火墙或入站访问规则。

公共端点

如需确定传送失败的原因,请检查您的 Cloud Logging 日志条目以获取失败信息。

例如,您可以使用日志浏览器搜索通知渠道资源的日志条目,过滤条件如下所示:

resource.type="stackdriver_notification_channel"

未收到 Pub/Sub 通知

如果您未能通过已配置的 Pub/Sub 通知渠道收到通知,请尝试以下操作:

  • 确保通知服务账号存在。服务账号被删除后,系统不会发送通知。

    如需验证服务账号是否存在,请执行以下操作:

    1. 在 Google Cloud 控制台中,前往 IAM 页面:

      前往 IAM

      如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

    2. 搜索具有以下命名惯例的服务账号:

      service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

      如果此服务账号未列出,请选择包括 Google 提供的角色授权

    如果通知服务账号不存在,则必须开始创建 Pub/Sub 通知渠道的过程,以便让 Monitoring 创建服务账号:

    1. 在 Google Cloud 控制台中,前往  提醒页面:

      进入提醒

      如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

    2. 点击修改通知渠道
    3. Pub/Sub 部分中,点击新增

      如果通知服务账号不存在,Monitoring 会创建一个。创建 Pub/Sub 渠道对话框会显示通知服务账号的名称。

    4. 如果您不想添加通知渠道,请点击取消。否则,请完成通知渠道的创建,然后点击添加渠道

    5. 向服务账号授予发布 Pub/Sub 主题的权限:

      1. 在新的浏览器标签页中,打开创建通知渠道文档。
      2. 选择 Pub/Sub 标签页,然后按照该页面向服务账号授权部分中的步骤操作。
  • 确保通知服务账号有权针对感兴趣的 Pub/Sub 主题发送通知。

    如需查看服务账号的权限,您可以使用Google Cloud 控制台或 Google Cloud CLI 命令:

    • Google Cloud 控制台中的 IAM 页面列出了每个服务账号的角色。
    • Google Cloud 控制台中的 Pub/Sub 主题页面列出了每个主题。选择主题时,权限标签页列出了授予服务账号的角色。
    • 如需列出所有服务账号及其角色,请运行以下 Google Cloud CLI 命令:

      gcloud projects get-iam-policy PROJECT_ID
      

      以下是此命令的部分响应:

          serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
             role: roles/monitoring.notificationServiceAgent
           - members:
             [...]
             role: roles/owner
           - members:
             - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
             role: roles/pubsub.publisher
      

      命令响应仅包含角色,不包括按主题进行授权。

    • 如需列出特定主题的 IAM 绑定,请运行以下命令:

      gcloud pubsub topics get-iam-policy TOPIC
      

      以下是此命令的示例响应:

          bindings:
          - members:
            - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
            role: roles/pubsub.publisher
          etag: BwXPRb5WDPI=
          version: 1
      

    如需了解如何为通知服务账号授权,请参阅为服务账号授权

未在虚拟机关停期间收到通知

如需在虚拟机关停期间收到通知,请创建拨测来定期轮询该虚拟机,然后创建提醒政策来监控该拨测。如果您使用的是虚拟私有云 (VPC),则可能需要创建专用拨测

监控 compute.googleapis.com/instance/uptime 指标的提醒政策不会在虚拟机关停期间发送有关该虚拟机的通知。对于此指标,提醒政策只会监控处于 RUNNING 状态的虚拟机实例的时序。如果虚拟机处于任何其他状态(例如 STOPPEDDELETED),则不会受到监控。如需了解虚拟机实例状态,请参阅虚拟机实例生命周期

未收到有关请求数提醒政策的通知

如果您未能收到监控 serviceruntime.googleapis.com/api/request_count 指标的提醒政策的通知,请确保该政策的校准时间段不超过 7 小时 30 分钟。

未收到短信通知或验证码

如果您未能收到短信通知或验证码,请确保您尚未达到短信数量上限。可能会有日志确认了此错误。请检查日志中是否存在 Denied quota token

作为一般建议,我们不建议仅依靠短信渠道来接收通知。系统会以“尽力而为”为原则来提供短信通知。