GCP监测中联合度量缺失数据的预警



我已经在GCP MOnitoring中创建了一个警报策略,当某种日志消息停止出现时(dead man's switch),该策略将通知我。我已经创建了一个带有标签"客户"的基于日志的指标,我使用该标签对指标进行分组,并获得每个客户端的时间序列。我一直在使用"缺乏数据"。作为警报的触发器。这一切都工作得很好,直到…

在最近的更改之后,日志现在也来自不同的资源,因此需要跨这些资源组合度量。我可以使用QML

实现这一点
{ fetch gce_instance::logging.googleapis.com/user/ping
| group_by [metric.client], sum(val())
| every 30m
; fetch global::logging.googleapis.com/user/ping
| group_by [metric.client], sum(val())
| every 30m }
| union

注意,我需要用相同的桶大小(30m)对齐两个系列,以便能够连接它们,这是有意义的。我注意到时间序列的值是"未定义"。在那些没有度量数据的桶中(通过下载查询的CSV)。

要使用这个查询创建一个警报,我尝试这样做:

{ fetch gce_instance::logging.googleapis.com/user/ping
| group_by [metric.client], sum(val())
| every 30m
; fetch global::logging.googleapis.com/user/ping
| group_by [metric.client], sum(val())
| every 30m }
| union
| absent_for 1h

如果我查看此查询的CSV输出,它并没有反映时间序列缺少度量数据,这可能是因为值"未定义";不符合缺失数据的条件

是否有一种方法来检测"联合"的数据缺失?跨多个资源的度量(因此是一致的)?


更新1

我试过这个,这似乎让我有一些方式。我非常感谢大家对这个方法的意见。

{
fetch gce_instance::logging.googleapis.com/user/ping
| group_by [metric.client], sum(val())
;
fetch global::logging.googleapis.com/user/ping
| group_by [metric.client], sum(val())
}
| union
| absent_for 1h

我已确定如下解决方案,

{
fetch gce_instance::logging.googleapis.com/user/ping
| group_by [metric.client]
;
fetch global::logging.googleapis.com/user/ping
| group_by [metric.client]
}
| union
| absent_for 1h
| every 30m

注意:

  • group_by [metric.client]符合来自不同资源的表,这允许union工作
  • absent_for使用默认周期或以下每个
  • 指定的周期对齐输入时间序列

我发现调试这些MQL查询非常困难,特别是要确认absent_for将触发警报。我意识到我可以使用value [active]来显示活动列的图(absent_for产生),这让我相信我的警报实际上是要工作的。

{
fetch gce_instance::logging.googleapis.com/user/ping
| group_by [metric.client]
;
fetch global::logging.googleapis.com/user/ping
| group_by [metric.client]
}
| union
| absent_for 1h
| value [active]

相关内容

  • 没有找到相关文章

最新更新