通过 Cloud Logging 配置提醒

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

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

  • 报告新的突发事件时。
  • 现有突发事件发生更新时,例如 Google Cloud 支持团队发送新消息时。
  • 创建或更新特定产品或地理位置(例如地区)的突发事件时。 Google Cloud
  • 更新现有突发事件的具体详细信息(例如状态和相关性)时。

由于这些通知使用日志提醒,因此每个通知都与一个 Monitoring 突发事件相关联。每条通知都包含指向突发事件页面和指向服务运行状况信息中心的直接链接。详细了解如何调查事故

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

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

如需将提醒转送到上文列出的选项以外的目标位置,不妨考虑使用 webhook。例如,您可以将 webhook 配置为指向 ServiceNow。如需了解详情,请参阅 ServiceNow 文档中的在 Google Cloud中配置 webhook

提醒通知格式

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

电子邮件

如果您将提醒配置为发送电子邮件,那么当满足提醒条件时,系统会使用 alert-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 productslocations 中找到的值。
      • 提醒条件示例:

        提醒条件 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:要包含在通知标头中的属性。如需自定义这些属性,请参阅 LabelExtractor 指南
  • 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 API 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. 等待几分钟,然后验证是否触发了提醒。