报警规则
告警规则
groups:
- name: example
rules:
- alert: HighErrorRate
expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
for: 10m
labels:
severity: page
annotations:
summary: High request latency
description: description info
在告警规则文件中,可以将一组相关的规则设置定义在一个 group 下。在每一个 group 中我们可以定义多个告警规则 (rule)。一条告警规则主要由以下几部分组成:
- alert:告警规则的名称
- expr:基于 PromQL 表达式告警触发条件,用于计算是否有时间序列满足该条件
- for:评估等待时间,可选参数。用于在第一次遇到新的触发报警等待一段时间, 只有当触发条件持续一段时间后才发送告警。在等待期间新产生告警的状态为 pending
- labels:自定义标签,允许用户指定要附加到告警上的一组附加标签
- annotations:用于指定一组附加信息,比如用于描述告警详细信息的文字等,annotations 的内容在告警产生时会一同作为参数发送到 Alertmanager
groups.name
没什么用处,只是逻辑上的分组,在Prometheus 页面上显示分组而已。和后面的 Alertmanager 中的 group 没有任何关系
默认情况下 Prometheus 会每分钟对这些告警规则进行计算,如果用户想定义自己的告警计算周期,则可以通过 evaluation_interval (prometheus.yml)
来覆盖默认的计算周期:
查看告警状态
用户可以通过 Prometheus WEB 界面中的 Alerts 菜单查看当前 Prometheus 下的所有告警规则,以及其当前所处的活动状态
同时对于已经 pending 或者 firing 的告警,Prometheus 也会将它们存储到时间序列 ALERTS {}
中。
可以通过表达式,查询告警实例:
样本值为 1 表示当前告警处于活动状态(pending 或者 firing),当告警从活动状态转换为非活动状态时,样本值则为 0