Prometheus PromQL 简单用法
说明
基于上一篇文章的基础,这里做一些关于 CPU、内存、磁盘的一些基础查询语句。
CPU
通过查询 metric值为 node_cpu_seconds_total 来获取当前CPU 的所有信息
直接通过此参数参数,会查到的数据是当前CPU的所有相关的收集到的数据。
此时就需要使用 irate 函数,用于计算距离向量中的实际序列的每秒顺势增长率。
再根据标签筛选来查询如下:
irate(node_cpu_seconds_total{job="node"}[5m])
使用avg聚合查询到的数据后,再使用by 来区分实例,这样就能做到分实例查询各自的数据。
avg(irate(node_cpu_seconds_total{job="node_srv"}[5m])) by (instance)
上面的语句查询到的CPU数据,是包含CPU的所有数据,而我们要查询的是CPU的5分钟负载
思路就可以这样:查询出CPU的空闲值mode='idle',乘以 一百得出空闲百分比后,在用100减去空闲百分比就得出CPU使用的百分比
如下:
100 - ((avg(irate(node_cpu_seconds_total{job="node_srv",mode="idle"}[5m])) by (instance)) * 100)


内存
关于内存的metric值有下面几个:
node_memory_MemTotal_bytes主机上的内存总量node_memory_MemFree_bytes主机上的空闲内存node_memory_Buffers_bytes内存缓冲区大小node_memory_Cached_bytes内存缓存区大小
那么基于上面的度量值,可以做出很多的查询。
计算使用内存的百分比:
思路就是用总内存减去空闲内存、缓冲区和缓存区的大小后,再除以总内存
(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100
最后乘以一百是为了得出百分比
结果如下:


磁盘监控
对于磁盘的监控,主要分为三种:
- 空间大小监控
- 磁盘IO读写监控
- 预计饱和度监控,意思是说以当前状态的磁盘写入速度,预计多长时间磁盘就会被写满
磁盘空间利用率百分比
根据标签筛选,查询某一个分区的空间利用率
原理是:相同的分区,用总空间减去剩余空间得到使用空间,除以总空间得到利用率百分比
(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

预计饱和
这里涉及到一些算法,直接列出公式。
此公式得出的值,当磁盘在未来某个时间段的条件内会写满后,得到的数值会是个负数。
predict_linear(node_filesystem_free_bytes{mountpoint="/"}[1h], 4*3600) < 0
Prometheus PromQL 简单用法的更多相关文章
- prometheus学习系列七: Prometheus promQL查询语言
Prometheus promQL查询语言 Prometheus提供了一种名为PromQL (Prometheus查询语言)的函数式查询语言,允许用户实时选择和聚合时间序列数据.表达式的结果既可以显示 ...
- CATransition(os开发之画面切换) 的简单用法
CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...
- jquery.validate.js 表单验证简单用法
引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...
- NSCharacterSet 简单用法
NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...
- [转]Valgrind简单用法
[转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...
- Oracle的substr函数简单用法
substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 subst ...
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
- TransactionScope简单用法
记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...
- WPF之Treeview控件简单用法
TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...
随机推荐
- (Git) 优秀Java,Vue项目推荐
Java 1.spring-boot-pay 地址:小柒2012/spring-boot-pay 这是一个支付案例,提供了包括支付宝.微信.银联在内的详细支付代码案例,对于有支付需求的小伙伴来说,这个 ...
- android 9.0 Launcher3 去掉抽屉式,显示所有 app
效果图 修改思路 1.增加全局控制变量 sys.launcher3.is_full_app,用来动态切换 2.增加两套布局,对应有抽屉和无抽屉 3.去除 allAppsButton 4.将 AllAp ...
- python正则小结
注意pattern字符串前要加r 原始字符串 元字符 . 匹配除换行的任意字符 ^ 匹配开头 $ 匹配结尾 表示重复 ...
- 7.30 NOIP模拟10
T1.辣鸡 考试的时候竟然被我以“麻烦”弃掉了,赛后发现这题好水啊,直接sort一下寻找四周即可. T2.模板 考试时期望得分70,实际得分5 首先看到这种题基本就是线段树,我们以时间为下标,对每一个 ...
- Java Part 001( 01_01_Java概述 )
Java作为编程语言, 甚至超出了语言的范畴, 成为一种开发平台, 一种开发规范. Java语言相关的JavaEE规范里, 包含了时下最流行的各种软件工程理念, 学习Java相当于系统的学习了软件开发 ...
- Cpython和Jython的对比介绍
CPython 当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython.这个解释器是用C语言开发的,所以叫CPython.在命令行下运行p ...
- printf的实现原理
printf的声明 int _cdecl printf(const char* format, …); _cdecl是C和C++程序的缺省调用方式 _CDEDL调用约定: 1.参数从 ...
- jvm与程序的生命周期
yls 2019/11/5 java虚拟机结束生命周期的情况: 执行了System.exit(); 程序正常运行结束 程序在执行过程中遇到异常或错误而异常终止 由于操作系统出现错误而导致jvm进程终止 ...
- 今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的解决了这个问题。
今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的 ...
- Java类/接口的API
本章节收集的类/接口API有: Object类,枚举,包装类,接口Comparable,类Arrays,异常, Object类 public String toString(): [把一个对象的信息用 ...