GCP 监控 - 事件不包含系统标签
Posted
技术标签:
【中文标题】GCP 监控 - 事件不包含系统标签【英文标题】:GCP Monitoring - Incident does not contain system labels 【发布时间】:2022-01-22 07:49:38 【问题描述】:我通过 GCP 控制台创建了警报政策。此政策将事件发送到 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":
,
尽管如此,如果我使用指标资源管理器查看此资源,我发现这些标签已被填充。
有什么建议吗?
【问题讨论】:
我想了解更多关于您创建策略的方式。您可以分享用于创建策略的查询吗?除此之外,您还在 Cloud Monitoring 中遇到问题,或者只是在 Cloud Pub/Sub 中查看元数据? 策略是使用 UI 创建的,没什么特别的。我已将其导出到 json 并添加到上面的原始问题中。至于您的第二个问题,这是云监控而不是发布订阅的问题。我将相同的事件发送到其他渠道并遇到相同的问题。 您是否创建了通知渠道并授权了服务帐户?授权允许通知服务帐户发布您用作通知渠道的每个 Pub/Sub 主题。 我认为你没有关注。我在频道上收到通知 - 这些通知(事件)缺少我上面提到的元数据字段。 【参考方案1】:这不是错误。仅当标签明确包含在条件的过滤器或跨系列聚合的分组中时,元数据的值才可用。也就是说,您必须在过滤器或分组中引用元数据标签,以便它具有模板的值。如需更多信息,请参阅documentation。
【讨论】:
【参考方案2】:根据这个documentation创建频道时,需要:
启用 Pub/Sub API 并创建主题。 为主题配置通知渠道。 授权服务帐户。 在提醒政策中设置通知渠道。要在提醒政策中使用 Pub/Sub 通知渠道,请选择 Pub/Sub 作为渠道类型,然后选择主题。 默认情况下,警报后端会尝试生成具有 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 和editing or deleting channels. 的详细说明
您需要在您的策略中启用过滤器,以便查看填充的 “metadata”:
下的字段(您想要的任何字段)。
为了确认这一点,我在 Google Cloud 中复制了您的场景。我创建了一个警报并将 pub/Sub 配置为通知渠道之一。
然后,我继续向 VM 施加压力以触发警报。当我在策略中使用过滤器(在本例中为“system_labels=name”)时,Pub/Sub 中消息主题中的“元数据”字段显示:
"metadata":
"system_labels": "name": "pubsubtest-1",
"user_labels":
,
但是当我没有配置时,策略中的过滤器显示给我:
"metadata":
"system_labels": ,
"user_labels":
,
【讨论】:
我不明白这如何回答我的问题 - 我确实在 PubSub 频道上收到了通知,这意味着我已经正确设置了所有内容。我只缺少元数据字段。配置中是否有仅与这些字段相关的部分? 我在回答中添加了更多信息,希望这些信息可以帮助您解决疑问。 首先非常感谢您的帮助!但是您建议的是解决错误的方法。我不想在字段上设置过滤器以获得它的价值,这很奇怪。我也不知道该字段的值 - 这就是我首先需要它的原因。无论如何它都应该存在 - 与资源标签的显示方式相同,无需设置任何过滤器。 @Omricoco,这不是错误。仅当标签明确包含在条件的过滤器或跨系列聚合的分组中时,元数据的值才可用。也就是说,您必须在过滤器或分组中引用元数据标签,以便它具有模板的值。如需更多信息,请参阅documentation。 @ChandraKiranPasumarti 这就是我想要的!谢谢。随意添加这是一个答案,我会接受它。以上是关于GCP 监控 - 事件不包含系统标签的主要内容,如果未能解决你的问题,请参考以下文章