如何在GCP监控中为多资源合并指标配置缺数告警?
问题:跨多资源合并指标后的数据缺失检测(死信开关告警)
背景
我在GCP Monitoring中搭建了**死信开关(Dead Man's Switch)**告警策略,目的是当特定日志消息停止出现时触发通知。此前基于带client标签的日志型指标(logs-based metric),按该标签分组生成每个客户端对应的时间序列,用「数据缺失」作为告警触发条件,运行一直正常。
近期日志来源新增了不同类型的资源,需要跨这些资源合并指标,我用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
为了让两个序列对齐,我设置了30分钟的时间桶,这符合逻辑。导出查询结果的CSV后发现,当指标数据缺失时,对应时间桶内的时间序列值为undefined。
告警配置遇到的问题
我尝试基于上述查询创建告警,写法如下:
{ 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输出时,并未体现出时间序列的数据缺失情况,推测原因是undefined值不被认定为数据缺失。请问有没有办法针对跨多资源合并后的指标(已对齐)检测数据缺失?
更新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
内容的提问来源于stack exchange,提问作者commander.trout
相关产品推荐
相关产品推荐

