Prometheus 告警规则学习

一、序言

根据官网文档一起学习告警规则:https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/

告警规则描述: 告警规则通过 PromQL 表达式判断指标是否满足告警条件,当条件触发时,会针对符合触发条件的标签组合发送告警通知。

例如:

- alert: HighCpuUsage
  expr: avg(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance, job) > 0.8
  for: 2m
  labels:
    severity: critical

执行表达式可能返回这样的结果:

{instance="server1:9100", job="node-exporter", severity="critical"}  0.85
{instance="server2:9100", job="node-exporter", severity="critical"}  0.92

HighCpuUsage 告警规则可以同时触发多个告警(如多台服务器超标),那么标签组合就可以明确是那台主机在告警。

二、告警规则配置

告警规则和记录规则配置方式相同,记录规则使用参考:https://blog.youkuaiyun.com/qq_50247813/article/details/150487185

告警规则语法如下:

# 警报的名称。必须是有效的标签值。
alert: <string>

# 要评估的 PromQL 表达式。在每次评估周期中,此表达式都会在当前时间点进行评估,并且所有生成的结果时间序列都会成为待命/触发的警报。
expr: <string>

# 触发时间满足多久被视为已出发告警
[ for: <duration> | default = 0s ]

# 当表达式触发告警,变为不触发后,保存告警状态多久时间。
[ keep_firing_for: <duration> | default = 0s ]

# 为每个告警添加或覆盖标签
labels:
  [ <labelname>: <tmpl_string> ]

# annotations(注释)用于为告警添加详细的描述信息,这些信息不参与告警的分组、路由等逻辑处理,主要用于向用户展示告警的具体内容、原因、解决方案等可读性信息。
annotations:
  [ <labelname>: <tmpl_string> ]

配置实例:
使用记录规则作为表达式:

groups:
  # 第一组: 记录规则(计算并存储cpu使用率)
  - name: cpu_recording_rules
    rules:
    - record: instance:node_cpu_seconds:avg_rate5m
      expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
      labels:
        metric_type: derived

  # 第二组: 告警规则(引用记录规则)
  - name: cpu_alerts
    rules:
    - alert: HighCpuUsage
      expr: instance:node_cpu_seconds:avg_rate5m > 80
      for: 2m
      labels:
        severity: warning
      annotations:
        summary: "实例 {{ $labels.instance }} CPU使用率过高"
        description: "CPU使用率已达 {{ $value | humanize }}%(阈值80%)"

    - alert: CriticalCpuUsage
      expr: instance:node_cpu_seconds:avg_rate5m > 95
      for: 1m
      labels:
        severity: critical
      annotations:
          summary: "实例 {{ $labels.instance }} CPU使用率临界"
          description: "CPU使用率已达 {{ $value | humanize }}%(阈值95%),系统可能无响应!"

重新在家Prometheus配置:

kill -HUP 6163

查看rules列表:
在这里插入图片描述
查看告警:
在这里插入图片描述

触发告警:
快速将cpu使用率提升上去:

stress的安装使用参考:https://blog.youkuaiyun.com/qq_50247813/article/details/148428133

stress --cpu 2 --timeout 600s
  • --cpu 2 : 指的cpu核心数
  • --timeout 600s : 压测时间

查看告警:
如下图,告警状态由INACTIVE转换成了PENDING
在这里插入图片描述

告警状态介绍:
告警状态有3种:

  • INACTIVE(非活跃状态)
    含义:表示告警当前没有触发 ,即 Prometheus 通过评估告警规则的表达式,发现当前指标数据未满足告警触发条件。例如,在 CPU 使用率告警规则中,当 CPU 使用率低于设定的阈值(如 80%)时,对应的告警就处于 INACTIVE 状态。

  • PENDING(待处理状态)
    含义:当告警规则的表达式开始满足告警条件时,告警会先进入 PENDING 状态。但此时并不会立即发送告警通知,Prometheus 会根据告警规则中设置的 for 时间参数进行判断 。只有当指标数据持续满足告警条件的时长达到 for 所设置的时间,告警才会进入 FIRING 状态。

  • FIRING(触发状态)
    含义:表示告警已经触发,即指标数据不仅满足了告警规则设定的条件,而且满足条件的时长也达到了 for 时间的要求。此时,Prometheus 会根据配置,将告警信息发送到对应的告警接收端(如 Alertmanager,然后由 Alertmanager 进一步将告警信息发送到邮件、短信、即时通讯工具等)。

当前告警状态是PENDING,只要满足for: 2m延时就会将状态更改为FIRING如下:
在这里插入图片描述


到这里告警规则就学会了,下一篇文章将学习Alertmanager 告警工具,Alertmanager会将告警发送到邮件、短信、即时通讯工具等

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值