说明:本文介绍prometheus中的规则配置;
规则说明
groups:- name: MySQLAlertsrules:- alert: MysqlDownexpr: mysql_up == 0for: 0mlabels:severity: criticalannotations: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 > 80for: 2mlabels:severity: warningannotations: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仓库里找到;
- https://github.com/samber/awesome-prometheus-alerts/tree/master/dist/rules
这里面有几十个应用或服务器硬件的许多rules,可以拷贝下来直接引到自己的promethes里面。
我找到了的时候都感动哭了,世界上还是好心人多。
总结
本文介绍了prometheus的rules配置,以及一些应用的rules如何配置。