prometheus告警规则设置(二)

博客介绍告警规则通过yml文件设置,需遵从其语法,可设规则组区分告警类型。重点在于expr表达式和提示消息设置。对于不熟悉PromSQL的人,可从grafana控制台获取查询语言来写表达式,还介绍了获取方法及查询示例。

告警规则的设置是通过yml文件来设置,因此需要遵从yml的语法

groups:
- name: example   #报警规则组的名字
  rules:
  - alert: InstanceDown     #检测job的状态,持续1分钟metrices不能访问会发给altermanager进行报警
    expr: up == 0
    for: 1m    #持续时间 , 表示持续一分钟获取不到信息,则触发报警
    labels:
      serverity: page   # 自定义标签
    annotations:
      summary: "Instance {{ $labels.instance }} down"     # 自定义摘要
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."   # 自定义具体描述

可以设置规则组, 规则组主要是做个告警类型的区分,比如说跟内存相关,IO相关,等等。

rules 下面 就是设置具体的规则。

告警规则的设置主要在于expr表达式的设置,以及annotations里面的提示消息的设置。

对于不了解PromSQL查询语言的,独自写表达式的难度是非常大的,我这里有个非常好的办法,我们可以从grafana

控制台获取查询语言,然后根据这个来写表达式。

第一步

进入grafana的控制台,找到任意一个视图。

点击edit

进入edit页面,可以看到**metrics **这个tab栏 , 这里就有各个指标的查询函数。 这里举个例子,比如

获取整个系统的CPU占比

system_cpu_usage{job="$application", instance="$instance"}

这个函数是指定了Job(应用的唯一标识,默认为应用名)和instance(应用的IP:端口)的,我们在实际使用的时候可以这样

system_cpu_usage{job="MSG-MS", instance="192.168.139.120:8080"}

想知道这个具体能查出来的数据是什么,可以访问prometheus的控制台。

http://10.208.204.46:9090/graph

查询结果如下

最下方,我们可以看到查询出来的结果。

查询的时候除了可以使用等号,也可以使用其他运算符

  =:选择正好相等的字符串标签
  !=:选择不相等的字符串标签
  =~:选择匹配正则表达式的标签(或子标签)
  !=:选择不匹配正则表达式的标签(或子标签)

举个例子:

system_cpu_usage{ job=~'.*MSG.*' } # 包含MSG的JOB

system_cpu_usage这个括号里面的值,都可以用来做查询条件。 后面value即为查出来的值

由此根据上面的准备,我们就可以定义如下的告警规则

groups:
- name: example   #报警规则组的名字
  rules:
  - alert: CPU负载告警     # 规则名称
    expr: system_cpu_usage{job="MSG-MS"}> 0.7   # 表示如果MSG-MS这个应用整个系统的CPU超过70% ,则触发告警
    for: 10s    #持续时间 , 表示持续10秒都是高于70%的,则报警
    labels:
      serverity: page   # 自定义标签
    annotations:
      summary: "{{ $labels.job}} - {{ $labels.instance }} 的CPU 太高了"     # 自定义摘要
      description: "应用名: {{ $labels.job }}  实例名: {{ $labels.instance }}  , 环境: {{ $labels.env }} , 当前值为 : {{ $value }}"   # 自定义具体描述

上面的告警规则, 我们用到了labels这个变量,以及value这个变量来输出信息。

labels 使用方法 :

在我们使用prometheus控制台做测试查询的时候,system_cpu_usage括号里面的属性,就是labels可以取到的值

value 使用:

上图中的value值

可以通过以下流程设置告警规则:先部署ipmi - exporter,然后由Prometheus抓取Exporter信息,再让Grafana抓取Prometheus信息制作看板、设置警告规则并进行信息推送。ipmi在BIOS设置中通常有可开/禁的选项,它能抓取设备硬件信息,如磁盘健康信息、阵列信息等。与node不同,它主要关注设备的硬件层面状况[^1]。 Prometheus本身可定义报警规则,Alertmanager则处理Prometheus服务器发送的警报,对警报进行重复数据删除、分组,将报警路由到如电子邮件、webhook、短信、电话等告警通道的接收器集成,还能对报警进行静音和抑制操作。在使用ipmi进行监控时,可通过标准的ipmi硬件接口,监控被监控对象的物理特征,如电压、温度、风扇状态、电源情况等,且ipmi独立于硬件和操作系统,其硬件设备BMC(bashboard management controller)是独立板卡并独立供电,不会受CPU、BIOS或OS故障的影响,可用于采集CPU温度、风扇转速、主板温度及实现远程开关机等功能,这些监控指标可作为Prometheus告警规则的依据 [^3][^4]。 示例代码(假设在Prometheus规则文件中定义一个简单的温度告警规则): ```plaintext groups: - name: ipmi_temperature_alerts rules: - alert: HighCPUTemperature expr: ipmi_cpu_temperature > 80 for: 5m labels: severity: critical annotations: summary: "High CPU temperature detected" description: "The CPU temperature on {{ $labels.instance }} has been above 80 degrees for 5 minutes." ``` 上述代码定义了一个名为`HighCPUTemperature`的告警规则,当`ipmi_cpu_temperature`指标值大于80且持续5分钟时触发告警告警级别为`critical`。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值