关于运维:Prometheus之告警规则的编写

37次阅读

共计 1157 个字符,预计需要花费 3 分钟才能阅读完成。

一、前置常识

对于被 Prometheus 监控的服务器,咱们都有一个 up 指标,能够晓得该服务是否在线。

up == 0  能够工作服务下线了。up == 1 能够工作服务在线。

二、需要

对于下线超过 1 分钟的服务,产生告警信息。

三、实现步骤

1、编写告警规定

groups:
- name: Test-Group-001 # 组的名字,在这个文件中必须要惟一
  rules:
  - alert: InstanceDown # 告警的名字,在组中须要惟一
    expr: up == 0 # 表达式, 执行后果为 true: 示意须要告警
    for: 1m # 超过多少工夫才认为须要告警(即 up== 0 须要继续的工夫)
    labels:
      severity: warning # 定义标签
    annotations:
      summary: "服务 {{$labels.instance}} 下线了"
      description: "{{$labels.instance}} of job {{$labels.job}} has been down for more than 1 minutes."

留神:
1、for 指定达到告警阈值之后,统一要继续多长时间,才发送告警数据。
2、labels中能够指定自定义的标签,如果定义的标签曾经存在,则会被笼罩。能够应用模板。
3、annotations 中的数据,能够应用模板,$labels 示意告警数据的标签,{{\$value}}示意工夫序列的值。

2、批改 prometheus.yml 执行告警规定的地位

rule_files:
  - "rules/*_rule.yaml"

示意加载 prometheus.yaml目录下级目录下的 rules 目录下所有的以 _rule.yaml 结尾的文件。

留神:
./promtool check config prometheus.yml 能够检测咱们的配置文件是否编写正确。

3、配置文件截图

4、页面上看告警数据信息


从上图中能够告警数据,存在 3 个状态,InactivePendingFiring

5、查问 prometheus 产生的告警数据

四、告警数据的状态

1、Inactive

示意没有达到告警的阈值,即 expr 表达式不成立。

2、Pending

示意达到了告警的阈值,即 expr 表达式成立了,然而未满足告警的持续时间,即 for 的值。

3、Firing

曾经达到阈值,且满足了告警的持续时间。
经测试发现,如果同一个告警数据达到了 Firing,那么不会再次产生一个告警数据,除非该告警解决了。
eg:
比方:192.168.1.1:9080 这个服务的宕机工夫超过了 1 分钟,并且产生了一个 Firing 的告警数据,如果这台机器没有复原,则不会再次产生雷同的告警数据。

五、参考文档

1、https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/

正文完
 0