- 进入prometheus-server安装节点
- 进入prometheus配置文件目录,新建rules文件夹,该文件夹用于存放告警规则文件,并且规定文件名后缀为.yml(规则文件命名格式可以自定义,只要和prometheus.yml文件配置的rule_files匹配上即可)
- 修改prometheus.yml文件配置rule_files为"rules/*.yml"
- 在2向欧盟口岸的ris文件夹下 新建一个规则文件instance_down_rule.yml进行测试。规则文件配置如下:
groups:
- name: Test-Group-001
rules:
- alert: InstanceDown
expr: up == 0
for: 1m
labels:
severity: warning
annotations:
summary: "服务 {{ $labels.instance }} 下线了"
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."
对于以上配置项的说明如下:
- name: 指定组的名字,在这个规则文件中必须要唯一。
- alert: 指定告警的名字,在组中需要唯一。
- expr: 告警表达式, 执行结果为true时,表示需要告警。表达式遵循PromQL语法。
- for:代表超过多少时间才认为需要告警(即告警表达式成立需要持续的时间)。
对于以上定义的规则文件说明如下:
对于被Prometheus监控的服务器,我们都有一个up指标,可以知道该服务是否在线;up == 0 表示服务下线了,up == 1 表示服务在线。因此,该规则文件的作用是对于下线超过1分钟的服务,产生告警信息。
- 重启prometheus-server,查看prometheus.yml,验证下前面修改的rule_files配置是否生效。
- 可以通过prometheus自带的promtool命令检测我们的配置文件是否编写正确。
promtool check config prometheus.yml
- 进到prometheus server的Alerts页面,可以查看到配置的告警规则已经生效。
告警数据有以下三个状态:
- Inactive:表示没有达到告警的阈值,即expr表达式不成立。
- Pending:表示达到了告警的阈值,即expr表达式成立了,但是未满足告警的持续时间,即for的值。
- Firing:已经达到阈值,且满足了告警的持续时间。
- 由于目前测试环境prometheus监控的服务都正常,因此不会产生告警,为了方便测试,停止kafka服务,可观察到告警。