前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >prometheus实战之三:告警规则

prometheus实战之三:告警规则

作者头像
程序员欣宸
发布2023-05-04 08:47:10
1.1K0
发布2023-05-04 08:47:10
举报
文章被收录于专栏:实战docker实战docker

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 本文是《prometheus实战》系列的第三篇,一起来学习prometheus的告警功能,如下图所示,整个告警功能分为规则和通知两部分,本篇是有关规则的详细介绍,至于命中规则后如何向外部发出通知是下一篇的内容
在这里插入图片描述
在这里插入图片描述
  • 本篇任务:如果指定机器的CPU使用率超过50%就告警

配置告警规则的基本流程

  • 新增告警规则的操作有以下四步

配置告警规则

  • 每个告警规则有五部分组成
  1. 名称(alert)
  2. 触发条件(expr),这是个PromQL表达式,例如CPU使用率超过50%,在触发条件被满足之前,告警的状态都是Inactive
  3. 持续时间(for),例如CPU使用率超过50%的时间持续30秒,在30秒之内,此告警状态为pending,超过30秒就进入firing状态
  4. 标签(labels),给告警打上标签,在使用时可以根据标签定位到指定告警
  5. 注解(annotations),对告警的描述,这些内容可以用来详明告警时刻的详细情况
  • 接下来配置一个规则并验证其效果
  • 首先用prometheus账号SSH登录prometheus服务器
  • 新建告警规则文件,我这里完整路径是/home/prometheus/prometheus/rules/cpu.rules,内容如下,每个参数都有详细说明
代码语言:javascript
复制
# 告警规则分组,每一个组下有多个告警规则
groups:
# 组名
- name: cpuAlertGroup
  # 告警规则数组
  rules:
  # 下面是一个具体的告警规则,名为hostCPUUsageTooHigh
  - alert: hostCPUUsageTooHigh
    # 基于PromQL的具体规则,这里是CPU使用率高于50%
    expr: (1 - sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance) ) * 100 > 50
    # 持续时间,实际情况满足expr后,规则从inactive
    for: 30s
    # 给规则自身设置标签
    labels:
      biz_type: cpu_usage
    annotations:
      # 告警内容摘要,可以用表达式获取变量的值
      summary: "Instance {{ $labels.instance }} CPU usgae high"
      # 告警内容详情,可以用表达式获取变量的值
      description: "{{ $labels.instance }} CPU usage above 50% (current : {{ $value }})"
  • 然后打开prometheus的配置文件prometheus.yml,通过配置rule_files参数的值,告诉prometheus在何处加载告警规则配置文件,具体配置如下图
在这里插入图片描述
在这里插入图片描述
  • 重启prometheus服务(prometheus账号操作)
代码语言:javascript
复制
systemctl restart prometheus
  • 打开prometheus的web UI,如下图,可以看到告警规则已加载成功
在这里插入图片描述
在这里插入图片描述
  • 告警的三种状态:Incative、Pending、Firing,具体的关系,我这边画了个草图
在这里插入图片描述
在这里插入图片描述
  • 配置完成,可以验证告警效果了

触发告警

  • 由于这里配置的是CPU告警,接下来就想办法让应用服务器的CPU升高,这里继续用ffmpeg对视频文件转码,参考命令如下
代码语言:javascript
复制
~/bin/ffmpeg -i ~/videos/4kh264.mp4 -c:v libx265 -vtag hvc1 -c:a copy ./output.mp4
  • CPU使用率开始上涨,下图是还未达到阈值时的数据
在这里插入图片描述
在这里插入图片描述
  • 此刻告警依然是inactive,未被触发
在这里插入图片描述
在这里插入图片描述
  • 等到CPU利用率超过阈值的时候,应用服务器的实际情况如下图
在这里插入图片描述
在这里插入图片描述
  • 再看prometheus的web UI,表达式显示也是超过了阈值,由于未满30秒,并未触发真正的告警(Firing),而是进入临时的Pending状态,此时annonation的内容中,配置的哪些变量已经被真实的值替换,显然,这样的内容可以帮我们定位到具体的故障信息
在这里插入图片描述
在这里插入图片描述
  • CPU使用率持续30秒都大于50%的时候,此告警进入Firing状态,如果配置了告警通知,此刻已触出发了告警通知(这部分下一篇会实现)
在这里插入图片描述
在这里插入图片描述
  • 至此,常规告警规则的编写和使用的操作已全部完成,接下来将曾经遇到的问题列出,帮大家跳过小坑

问题记录

  • 告警规则的label名不能用减号,但是可以用下划线
  • 下图这样写会导致prometheus启动失败
在这里插入图片描述
在这里插入图片描述
  • 可以这样写
在这里插入图片描述
在这里插入图片描述
  • 咱们熟悉了告警规则,接下来就要进军告警通知了,毕竟prometheus产生的告警需要第一时间让相关人员感知到,下一篇的alertmanager就承担着这份重任
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎访问我的GitHub
  • 本篇概览
  • 配置告警规则的基本流程
  • 配置告警规则
  • 触发告警
  • 问题记录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档