说明:本文介绍prometheus中的规则配置;
规则说明
groups:
- name: MySQLAlerts
rules:
- alert: MysqlDown
expr: mysql_up == 0
for: 0m
labels:
severity: critical
annotations:
summary: MySQL down (实例:{{ $labels.instance }})
description: "MySQL 挂了: {{ $labels.instance }}\n 当前值:{{ $value }}\n 标签:{{ $labels }}"
# `{{ $labels.instance }}`上使用了超过80%的MySQL连接。
- alert: MysqlTooManyConnections(>80%)
expr: max_over_time(mysql_global_status_threads_connected[1m]) / mysql_global_variables_max_connections * 100 > 80
for: 2m
labels:
severity: warning
annotations:
summary: MySQL 连接数过多 (> 80%) (实例:{{ $labels.instance }})
description: "{{ $labels.proj }}MySQL 的连接数超过了允许的 80% {{ $labels.instance }}\n 当前值:{{ $value }}\n 标签:{{ $labels }}"
如上(来自:Prometheus-Rules 实战),是关于MySQL的两条rule,分别判断MySQL服务是否宕机和连接数是否过多,当触发规则时会报警,将消息发给alertmanager,通知到应用(如钉钉、企业微信、邮箱)。
其中:
groups:规则组,命名MySQLAlerts,表示以下都是关于MySQL各项指标的规则;
name:规则组命名;
rules:各个规则;
alert:该条规则的名称;
expr:表达式,可写简单的指标判断表达式;
for:冷却时间,表示在该时间内不会再触发这个rule;0m,表示有符合表达式就触发,2m,表示触发后2分钟内之间不会再次触发;
labels -> severity:报警级别;
annotations -> summary:概要信息;
annotations -> description:描述信息;
写完之后,我们可以在prometheus的配置文件中,通过下面这个配置项引入规则文件。
rule文件需要和prometheus的配置文件放在同级目录。
设置完之后,重启prometheus,可以在页面上看到设置的rules;
其他应用
其他应用的rule,可以在下面这个Github仓库里找到;
这里面有几十个应用或服务器硬件的许多rules,可以拷贝下来直接引到自己的promethes里面。
我找到了的时候都感动哭了,世界上还是好心人多。
总结
本文介绍了prometheus的rules配置,以及一些应用的rules如何配置。