跳转至

报警规则

告警规则

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)来覆盖默认的计算周期:

global:
  [ evaluation_interval: <duration> | default = 1m ]

查看告警状态

用户可以通过 Prometheus WEB 界面中的 Alerts 菜单查看当前 Prometheus 下的所有告警规则,以及其当前所处的活动状态

同时对于已经 pending 或者 firing 的告警,Prometheus 也会将它们存储到时间序列 ALERTS {} 中。

可以通过表达式,查询告警实例:

ALERTS{alertname="<alert name>", alertstate="pending|firing", <additional alert labels>}

样本值为 1 表示当前告警处于活动状态(pending 或者 firing),当告警从活动状态转换为非活动状态时,样本值则为 0

参考