mr.*_*ski 2 prometheus prometheus-alertmanager
我们使用 Prometheus 来观察我们自己的应用程序的指标。我们应用程序的 API 提供了一个端点来将指标传递给 Prometheus。Prometheus 每 30 秒就会抓取一次信息。
根据指标,我们定义了一些警报,这些警报会触发到 Alertmanager,然后触发电子邮件警报、Slack 消息或显示在 Alerta 中。
有时我们的应用程序无法提供指标,并且 Prometheus 抓取器运行超时。每当某个指标在这样的时刻丢失时,相应的警报就会被清除(在电子邮件、Slack、Alerta 中)。
30 秒后,我们的应用程序再次提供指标,Prometheus 发出新警报(再次触发电子邮件、Slack 消息并在 Alerta 中显示新警报)。
如果没有给出清除警报可能所依据的指标(至少在我们看来),那么缺少指标就没有理由清除警报。
是否有任何选项可以以某种方式配置 Prometheus 或 Alertmanager,只有在指标导致警报出现时才解决/清除警报(而不是将缺乏指标解释为清除警报)?
小智 5
这可以通过使用聚合函数last_over_time()来完成。
例如,假设您感兴趣的指标是:probe_success
目前您的警报表达式是:probe_success == 0
如果该指标不存在,这将不会返回任何值,因此您的警报会清除创建您所描述的问题。
相反,将您的警报表达式更改为:last_over_time(probe_success[12h]) == 0
这将返回过去 12 小时内记录的最后一个指标值。将时间范围调整为您愿意容忍该指标缺失的时间长度,同时仍然假设它会返回。
| 归档时间: |
|
| 查看次数: |
2637 次 |
| 最近记录: |