通过 Cloud Logging 配置提醒

本文档介绍了如何为服务健康状况事件设置、自定义和测试提醒。

Personalized Service Health 与 Cloud Monitoring 日志提醒集成,因此您可以配置和接收提醒。您可以针对以下情况创建通知:

  • 当有新的突发事件报告时。
  • 现有突发事件更新时,例如 Google Cloud 支持人员发送新消息时。
  • 当针对特定 Google Cloud 产品或位置(例如区域创建或更新突发事件时。
  • 当现有突发事件的特定详细信息(例如状态和相关性)更新时。

由于这些通知使用日志提醒,因此每个通知都与一个 Monitoring 突发事件相关联。每封通知都包含指向突发事件页面的链接,以及指向 Service Health 信息中心的直接链接。详细了解如何调查突发事件

配置提醒后,每当满足提醒政策条件时,您都会收到通知。这些通知受监控限制的约束;例如,每个项目每天每项政策最多只能发送 20 条提醒。

以下部分介绍了如何配置日志提醒政策,并针对常见提醒场景提供了示例。日志提醒依赖于通知渠道,支持各种集成,包括电子邮件、短信、Pub/Sub、Webhook、Slack 和 PagerDuty。

如需将提醒路由到上述选项以外的目标位置,请考虑使用 Webhook。例如,您可以为 ServiceNow 配置 webhook。如需了解详情,请参阅 ServiceNow 文档中的在 Google Cloud中配置 Webhook

提醒通知格式

提醒通知的格式因通知渠道而异。

电子邮件

如果您将提醒配置为发送电子邮件,当满足提醒条件时,系统会使用 alerting-noreply@google.com 地址向您选择的电子邮件地址发送一封邮件。

Slack

如果您将自定义通知配置为发布到 Slack,则在发生事件时,Cloud Monitoring 应用会在您选择的渠道中显示一条消息。

设置提醒政策

提醒使用提醒政策,该政策描述了您希望在哪些情况下收到提醒以及通过什么方式获得通知。

您可以在 Service Health”信息中心内或使用 Google Cloud CLI 配置提醒政策。

提醒政策需要 Cloud Monitoring 通知渠道,该渠道用于定义提醒的发送位置。如果您没有通知渠道,可以在 Google Cloud 控制台中或使用 Monitoring API 创建一个。

在 Service Health”信息中心内

请参阅快速入门

使用 gcloud CLI

如需使用 gcloud CLI 设置提醒政策,请执行以下操作:

  1. 获取通知渠道 ID。

    a. 列出通知渠道 ID

    gcloud config set project PROJECT_ID
    gcloud beta monitoring channels list
    

    b. 查找包含 projects/PROJECT_ID/notificationChannels/ 的条目。 这些条目是通知渠道 ID。

  2. 创建一个包含以下内容的 policy.json 文件:

    • 通知中会显示 ALERT_NAME。示例:“Google Cloud SQL 突发事件”

    • ALERT_CONDITION 用于定义何时发出提醒。

      • 定义条件时,请使用 Google Cloud 产品位置中的值。
      • 提醒条件示例:

        提醒条件 ALERT_CONDITION
        接收有关任何 Cloud SQL 事件的提醒 jsonPayload.impactedProductIds =~ \"hV87iK5DcEXKgWU2kDri\"
        接收区域 us-central1-a 中发生的任何事件的提醒 jsonPayload.impactedLocations =~ \"us-central1-a\"

      查看更多提醒条件示例

    • NOTIFICATION_CHANNEL 是通知渠道 ID,您在上一步中使用列表命令获取了该 ID。示例:projects/PROJECT_ID/notificationChannels/885798905074

    以下代码段显示了 policy.json 文件的示例。

    {
      "displayName": "ALERT_NAME",
      "combiner": "OR",
      "conditions": [ {
        "displayName": "Log match condition",
        "conditionMatchedLog": {
          "filter": "ALERT_CONDITION",
         } } ],
      "notificationChannels": [ "NOTIFICATION_CHANNEL" ],
    }
    
  3. 创建 Cloud Monitoring 政策。

    gcloud config set project PROJECT_ID
    gcloud alpha monitoring policies create --policy-from-file="policy.json"
    

自定义提醒的内容

您可以通过 JSON 文件中的以下字段设置通知中的字段:

  • labelExtractors:要包含在通知标头中的属性。如需自定义这些属性,请参阅 LabelExtractors 指南
  • content:电子邮件通知的格式。您可以使用 Markdown 变量替换,这样您就可以将 labelExtractors 用作变量。如需自定义这些变量,请参阅此指南

如需了解如何自定义提醒,请参阅提醒政策和条件的示例

测试提醒

如需测试提醒,您将使用 Cloud Logging 中的示例测试日志。测试日志会显示您之前配置的提醒逻辑。

使用 Google Cloud 控制台

执行以下操作:

  1. 前往 entries:write 方法的参考页面,该方法可让您将日志条目写入 Cloud Logging。系统会显示一个窗口,让您尝试该方法。
  2. 在请求正文中,将 PROJECT_ID 更改为您自己的项目。
  3. 根据您要测试的提醒条件,更改请求正文中的所有 jsonPayload 字段。您还可以查看 event_log.proto 架构并调整日志中的值,以测试您感兴趣的特定场景。

    {
      "entries": [
        {
          "logName": "projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity",
          "resource": {
            "type": "servicehealth.googleapis.com/Event",
            "labels": {
              "resource_container": "PROJECT_ID",
              "location": "global",
              "event_id": "U4AqrjwFQYi5fFBmyAX-Gg"
            }
          },
          "labels": {
            "servicehealth.googleapis.com/new_event": "true",
            "servicehealth.googleapis.com/updated_fields": "[]"
          },
          "jsonPayload": {
            "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog",
            "category": "INCIDENT",
            "title": "EXAMPLE... NOT REAL INCIDENT",
            "description": "EXAMPLE FOR TESTING, NOT REAL INCIDENT. We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.",
            "updateTime": "2022-07-15T22:26:40Z",
            "endTime": "2022-07-16T22:13:20Z",
            "impactedLocations": "['us-east1', 'australia-southeast2']",
            "impactedProducts": "['CloudSQL']",
            "impactedProductIds": "['hV87iK5DcEXKgWU2kDri']",
            "startTime": "2022-07-13T12:26:40Z",
            "nextUpdateTime": "2022-07-13T16:26:40Z",
            "state": "ACTIVE",
            "detailedState": "CONFIRMED",
            "relevance": "RELATED"
          }
        }
      ]
    }
    
  4. 点击 Execute。系统会显示一个窗口,其中 Google APIs Explorer 会请求访问您的账号。

  5. 允许 Google APIs Explorer 访问。包含请求正文的窗口会显示以下屏幕截图,表明请求已成功发送。

    200 条消息

  6. 等待几分钟,然后验证是否触发了相应提醒。

    1. 在 Google Cloud 控制台中,前往 Cloud Monitoring > 突发事件页面。

      前往“突发事件”页面

    2. 检查您是否在提醒政策使用的通知渠道中收到了提醒。

如果您需要再次测试提醒,请至少等待 5 分钟。

使用 gcloud

您还可以使用 gcloud 命令通过调用 Cloud Logging API 来创建测试日志条目。

  1. (可选)检查当前项目。

    gcloud config list
    
  2. 设置当前项目。

    gcloud_name config set project PROJECT_ID
    
  3. 写入测试日志条目

    gcloud logging write --payload-type=json
    LOG_NAME
    '{ "category": "INCIDENT", "relevance": "IMPACTED", "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog", "description": "This is a test log entry"}'
    
  4. 等待几分钟,然后验证是否触发了相应提醒。