prometheus实战之三:告警规则

news2024/11/17 13:47:26

欢迎访问我的GitHub

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

本篇概览

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

配置告警规则的基本流程

  • 新增告警规则的操作有以下四步
1. 新建规则配置文件
2. 编写规则
3. 配置prometheus,使用新规则配置文件
4. 重启prometheus,使规则生效

配置告警规则

  • 每个告警规则有五部分组成
  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,内容如下,每个参数都有详细说明
# 告警规则分组,每一个组下有多个告警规则
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账号操作)
systemctl restart prometheus
  • 打开prometheus的web UI,如下图,可以看到告警规则已加载成功
    在这里插入图片描述
  • 告警的三种状态:Incative、Pending、Firing,具体的关系,我这边画了个草图
    在这里插入图片描述
  • 配置完成,可以验证告警效果了

触发告警

  • 由于这里配置的是CPU告警,接下来就想办法让应用服务器的CPU升高,这里继续用ffmpeg对视频文件转码,参考命令如下
~/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就承担着这份重任

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/485975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python使用AI animegan2-pytorch制作属于你的漫画头像/风景图片

Python使用AI animegan2-pytorch制作属于你的漫画头像 1. 效果图2. 原理3. 源码参考 git clone https://github.com/bryandlee/animegan2-pytorch cd ./animegan2-pytorch python test.py --photo_path images/photo_test.jpg --save_path images/animegan2_result.png1. 效果图…

全球首个机器人辅助试管婴儿降生

近日,两名通过机器人辅助受精手术成功诞生的女婴成为全球瞩目的焦点。这是全球首批由机器人成功辅助受精的婴儿案例,预示着未来生育技术的发展趋势。 以往,试管婴儿受精过程中将精子注入卵子内的环节都是由人工完成。胚胎技术人员需要在显微镜…

最简单的循环

☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:C语言学习 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪&am…

6. Docker——详说镜像

本章讲解知识点 Docker 镜像 Union File System(联合文件系统)技术 回说 Docker 镜像分层 Docker 镜像分层原理 1. Docker 镜像 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含…

一文了解 Zebec Labs 投资的 Coral Finance,空投计划或在不久推出

在前不久,Zebec Labs 宣布对链上衍生品协议 Coral Finance 进行150万美元的投资,以帮助该协议完成早期启动并,并在后续持续的为其提供孵化支持。Coral Finance 将在不久部署在 Nautilus Chain 主网上。据了解,Coral Finance 是 Na…

【VM服务管家】VM4.2平台SDK_6.2 模块操作类

目录 2.2.1 流程操作:通过流程或Group设置输入输出图像的方法2.2.2 模块操作:设置输入图像、参数和ROI2.2.3 N点标定:清空标定点、生成标定文件2.2.4 分支字符:控制调试模式开关的方法2.2.5 条件检测:条件检测模块设置…

【GAMES101】02 Review Of Linear Algebra

1.点乘: 向量点乘 → 一个数值 点乘在图形学中的应用: 找到两个方向之间的夹角。找到一个向量投影到另一个向量上是什么样的。计算两个向量的方向(是接近还是远离)判定高光范围,从1(重合&#xff…

【VM服务管家】VM4.2平台SDK_6.5 全局类

目录 2.5.1 全局相机:获取全局相机列表和设置相机参数的方法 2.5.1 全局相机:获取全局相机列表和设置相机参数的方法 描述 环境:VM4.2 VS2013及以上 问题:问题1:如何获取方案中所有的全局相机的连接状态,…

c++基础-分支语句

目录 if语句 if-else switch语句 if语句 在C中,if语句是一种分支结构,它允许程序根据条件执行不同的操作。可以使用if语句来检查一个条件是否为真,如果为真就执行一个语句块,否则执行另一个语句块。 if语句的语法如下&#xff…

自媒体平台图文创作建议和技巧

自媒体博主在自媒体平台进行图文创作时,需要注意哪些方面才能创造出更好的内容获得更多的关注呢?今天跟大家分享自媒体创作中的一些图文创作建议和技巧。 一、确定目标受众 首先需要明确自己要传达的信息和目标受众。要考虑读者的兴趣、需求和阅读习惯&…

2001-2021年全国30省就业人数数据

2001-2021年全国30省就业人数数据/各省就业人数数据 1、时间:2001-2021年 2、范围:包括30个省市不含西藏 3、指标:就业人数 4、来源:各省NJ、社会统计NJ 5、缺失情况说明:无缺失 6、指标说明: 就业人…

【Python入门】人生苦短,我用Python

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函…

10万字城市大脑一网统管分析平台及大数据平台建设方案(WORD)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 一.1.1.督查监管子系统 督察监管子系统是指通过独立的督察队伍,以日常督察、专项督察的方式,来检查运行效果。根据工作进度,工作中存在的…

【无人车】无人驾驶地面车辆避障研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ChatGPT常见问题及其解决方法汇总

好久没有更新过技术类的文章了,希望本篇文章能够对你有所帮助,今天这篇博客将会把ChatGPT注册中可能遇到的问题彻头彻尾的讲一下,创作不易,如果感觉有帮助的话就动动你发财的小手点个收藏点个赞吧。如有需要转载请附上原文链接&am…

mysql5.7以上的启动、停止、赋权命令

文章目录 1、启动mysql server2、查看初始密码3、本地登陆mysql4、修改本地root用户密码5、防火墙设置6、开启mysql的远程登录 1、启动mysql server systemctl start mysqld #启动程序 systemctl enable mysqld #开机自运行 systemctl status mysqld #查看状态…

浅谈WebGIS未来应用与技术发展趋势

前言 WebGIS(Web GIS)是一种基于Web的地理信息系统,它可以实现地理空间数据的查询、分析、管理和可视化。与传统的 GIS 相比,WebGIS 是通过浏览器实现客户端与服务器间的信息交流,成本降低,且界面友好&…

No.046<软考>《(高项)备考大全》【专项2】《案例分析 - 计算题(上)》

《(高项)备考大全》【专项2】《案例分析 - 计算题》 1 题型全部概况2 时间管理2.1 关键路径法 CMP2.1.1 原理2.1.2 关键路径的基本问题2.1.3 题目7、题目6 - 正推、反推8、题目7 2.2 PERT(计划评审技术)2.3 活动排序网络图 3 成本…

CesiumForUnreal、UE5实现限高分析效果

文章目录 1.实现目标2.实现过程2.1 材质2.2 Widget2.3 运行测试3.参考资料1.实现目标 在UE5中基于CesiumForUnreal插件实现简单GIS分析功能中的限高分析效果,GIF动图如下: 2.实现过程 实现限高分析功能的方法可以大致分为两种,一种是修改3DTileset的材质;另一种是基于贴花…

gitee同一台电脑使用多个账号的问题

官方文档:https://gitee.com/help/articles/4238#article-header0 目录 一、通过 https / ssh 协议推拉代码二、通过 https 推拉代码但是存在多个账号的问题三、通过 ssh 推拉代码四、Git配置多个SSH-Key五、TortoiseGit客户端 一、通过 https / ssh 协议推拉代码 …