PromQL查询以查找每个触发警报的持续时间

时间:2020-10-24 05:36:25

标签: prometheus grafana promql grafana-variable

我正在创建一个Grafana仪表板,以查看每个触发警报的总警报计数和持续时间(这意味着它应捕获警报已触发了多长时间的状态)。

用于捕获警报总数的PromQL查询如下,

count by (alertname,customerName) (changes(customer_ALERTS[24h]))

想法是在Grafana表格面板中添加另外两列,分别为alert countduration

现在,我需要获取查询以捕获每个警报的持续时间。有人可以分享一些想法吗?

1 个答案:

答案 0 :(得分:1)

如果您知道警报的评估间隔,则可以使用以下PromQL查询来计算过去24小时内处于触发状态的警报的持续时间(以秒为单位):

count_over_time(customer_ALERTS[24h]) * <evaluation_interval_in_seconds>

该查询假定customer_ALERTS在警报触发时包含非空值,而在警报未触发时不包含任何值。如果在未触发警报时customer_ALERTS包含zero值,而在警报触发时包含one值,则应使用以下查询代替确定触发警报的持续时间状态(以秒为单位):

avg_over_time(customer_ALERTS[24h]) * 24 * 3600

如果customer_ALERTS包含其他用于触发/非触发状态的值,则PromQL subqueries可用于对处于触发状态的样本进行计数。还要查看MetricsQL functions,例如lifetime(m[d])share_gt_over_time(m[d], gt)count_gt_over_time(m[d], gt)