排查通知丢失问题

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

收不到通知

您配置了通知渠道,并且预计 在发生突发事件时通知我。但是,您不会收到任何通知。

如需收集有关失败原因的信息,请执行以下操作:

  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”。

收不到网络钩子通知

您可以配置网络钩子通知渠道,并希望在发生突发事件时收到通知。但是,您不会收到任何通知。

专用端点

除非端点处于公开状态,否则您不能将网络钩子用于通知。

如需解决此问题,请参阅 Pub/Sub 通知以及针对该通知主题的拉取订阅

配置 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 会创建通知服务账号 就会出现这种错误Create Pub/Sub Channel 对话框 显示通知服务账号的名称。

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

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

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

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

    • Google Cloud 控制台中的 IAM 页面列出了每个 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
      

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

收不到拨测提醒政策的通知

您希望在虚拟机 (VM) 重新启动或关停时收到通知,因此您要创建监控指标 compute.googleapis.com/instance/uptime 的提醒政策。您可以创建并配置条件,以便在没有指标数据时生成突发事件。您不能使用 Monitoring Query Language (MQL)1 定义该条件。当虚拟机 (VM) 重新启动或关停时,系统不会通知您。

此提醒政策仅监控处于 RUNNING 状态的 Compute Engine 虚拟机实例的时间序列。对于任何其他状态(例如 STOPPEDDELETED)的虚拟机,系统会在评估条件之前过滤掉其时序。鉴于此行为,您不能使用带有指标缺失提醒条件的提醒政策来确定虚拟机实例是否正在运行。如需了解虚拟机实例状态,请参阅虚拟机实例生命周期

如需解决此问题,请创建提醒政策以监控拨测。对于专用端点,请使用专用正常运行时间 检查

关于拨测提醒的可行替代方案是使用提醒政策 监控缺少的数据。我们强烈建议您设置正常运行时间提醒 检查而不是缺少数据:指标缺失提醒政策 如果可用性存在暂时性问题,则会出现误报 Monitoring 数据。

但是,如果无法使用拨测,您可以创建 带有 MQL 的通知,告知您虚拟机已关停。 MQL 定义的条件不会根据 虚拟机实例的状态由于 MQL 不会按虚拟机状态过滤数据,因此您可以使用它来检测已关停的虚拟机的数据缺失。

请考虑监控 compute.googleapis.com/instance/cpu/utilization 指标的以下 MQL 条件:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|absent_for 3m

如果此条件监控的虚拟机关闭,三分钟后,将生成一个突发事件并发送通知。absent_for 值必须至少为三分钟。

如需详细了解 MQL,请参阅使用 MQL 的提醒政策

1:MQL 是富有表现力的 可与 Cloud Monitoring API 调用搭配使用, Google Cloud 控制台。要使用 MQL 配置在使用 则必须使用代码编辑器。

收不到请求计数提醒政策的通知

您想要监控已完成的请求数量。您创建了 提醒政策,对指标进行监控 serviceruntime.googleapis.com/api/request_count,但你 在请求数量超过您设定的阈值时 配置。

请求数指标的最长校准期为 7 小时 30 分钟。

如需解决此问题,请查看提醒中校准时间段的值 政策。如果值大于此指标的最大值,请降低 校准时间段使其不超过 7 小时 30 分钟。