GCP 监控 - 事件不包含系统标签

GCP Monitoring - Incident does not contain system labels

我已经通过 GCP 创建了警报策略 console.This 策略将事件发送到 PubSub 通知通道。

例如:容器的高CPU利用率策略

{
  "name": "...",
  "displayName": "...",
  "documentation": {},
  "conditions": [
    {
      "name": "...",
      "displayName": "Kubernetes Container - CPU usage time",
      "conditionThreshold": {
        "aggregations": [
          {
            "alignmentPeriod": "300s",
            "perSeriesAligner": "ALIGN_RATE"
          }
        ],
        "comparison": "COMPARISON_GT",
        "duration": "0s",
        "filter": "metric.type=\"kubernetes.io/container/cpu/core_usage_time\" resource.type=\"k8s_container\"",
        "thresholdValue": 0.04,
        "trigger": {
          "count": 1
        }
      }
    }
  ],
  "alertStrategy": {
    "autoClose": "604800s",
    "notificationPrompts": [
      "OPENED"
    ]
  },
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "..."
  ],
  "creationRecord": {
    "mutateTime": "...",
    "mutatedBy": "..."
  },
  "mutationRecord": {
    "mutateTime": "...",
    "mutatedBy": "..."
  }
}

一旦触发此警报,并在 PubSub 端获取事件,system_labels 的元数据字段始终为空:

    "metadata": {
      "system_labels": {},
      "user_labels": {}
    },

尽管如此,如果我使用指标资源管理器查看此资源,我会看到这些标签已填充。

有什么建议吗?

根据这个documentation创建频道时,您需要:

  • 启用 Pub/Sub API 并创建主题。
  • 配置主题的通知渠道。
  • 授权服务帐户。
  • 在警报策略中设置通知渠道。

要在警报策略中使用 Pub/Sub 通知渠道,select Pub/Sub 作为渠道类型,然后 select 主题。 默认情况下,警报后端会尝试生成具有 1.2 版格式的 JSON 数据包。

默认情况下,元数据字段需要具有以下值:

"metadata": {
  "system_labels": { "labelkey": "labelvalue" },
  "user_labels": { "labelkey": "labelvalue" }
},

如果“system_labels”字段不显示“labelkey”和“labelvalue”,您需要使用服务帐户检查您的配置并确定您在警报策略中正确设置了通知渠道。

请查看 examples of JSON packet and the schema

在同一篇文章中,您将找到有关 Create a Channel on demand and editing or deleting channels.

的详细说明

您需要在策略中启用过滤器,以便查看 “metadata”:{ 下填充的字段(无论您想要什么字段)。

为了确认这一点,我在 Google 云中复制了您的场景。我创建了一个警报并将 pub/Sub 配置为通知渠道之一。

并且,我继续对 VM 施加压力以触发警报。当我在策略中使用过滤器时(在本例中为“system_labels=name”),Pub/Sub 中消息主题中的“元数据”字段显示:

"metadata": {
      "system_labels": {"name": "pubsubtest-1"},
      "user_labels": {}
    },

但是当我没有配置时,策略中的过滤器显示给我:

"metadata": {
      "system_labels": {},
      "user_labels": {}
    },

这不是错误。元数据的值。* 仅当标签明确包含在条件的过滤器或分组中以进行跨系列聚合时,变量才可用。也就是说,您必须在筛选器或分组中引用元数据标签,以便它具有用于模板的值。有关详细信息,请参阅 documentation.