个人技术分享

说明:本文介绍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如何配置。