关于缺失系列/数据的警报
Posted
技术标签:
【中文标题】关于缺失系列/数据的警报【英文标题】:Alert on missing series/data 【发布时间】:2019-03-19 18:43:30 【问题描述】:我正在尝试了解如何在不再抓取指标时让 Grafana 提醒我。
我在此示例中使用的指标是mongodb_instance_uptime_seconds
。当实例关闭时,不再生成指标,导致 Prometheus 中缺少指标。目前警报在when last() query(A, 1m, now) < 600
上触发。如您所见,目标是在正常运行时间低于 5 分钟时发出警报。这意味着我想提醒重启和停止,但 Grafana 不会在一个实例关闭时发出警报,因为 last()
值实际上不存在,并且当实例关闭超过 5 分钟时,它甚至不再报告。
关于如何前进的任何线索?
【问题讨论】:
【参考方案1】:通常用于确定实例是否被成功抓取的指标是up
。它是由所有抓取作业自动生成的,因此如果您想要对任何已关闭的抓取端点发出警报,只需使用查询up == 0
,它将显示最后一次抓取未成功的任何端点。如果您只想针对此特定端点发出警报,请使用 upinstance="mongodb.foo.com",job="mongo" == 0
等标签
如果您曾经有兴趣使用 Alertmanager 而不是 Grafana,规则如下所示:
groups:
- name: General
rules:
- alert: Endpoint_Down
expr: up == 0
for: 5m
labels:
severity: critical
annotations:
summary: "Exporter is down: $labels.instance "
description: "The endpoint $labels.instance is not able to be scraped by Prometheus."
【讨论】:
在警报配置界面上,我在哪里可以找到up
?我可以看到avg
、count
、sum
等内容,但看不到up
。
不要单独在up
上设置警报,而是考虑在absent
上设置它。例如:absent(uppod=~"deployment-name.+")==1
@samadmontazeri 你能解释一下原因吗?对我来说缺席不会返回任何数据点。
absent 不应该替换。缺席的目的是检查时间序列是否缺少数据robustperception.io/absent-alerting-for-jobs。在上面的情况下,up ==0 会在没有东西被抓取时返回,但如果它刚刚从发现中消失,absent(up) 会发出警报。也不是一个包罗万象的@judos以上是关于关于缺失系列/数据的警报的主要内容,如果未能解决你的问题,请参考以下文章