说明

基于上一篇文章的基础,这里做一些关于 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

最后乘以一百是为了得出百分比

结果如下:



磁盘监控

对于磁盘的监控,主要分为三种:

  1. 空间大小监控
  2. 磁盘IO读写监控
  3. 预计饱和度监控,意思是说以当前状态的磁盘写入速度,预计多长时间磁盘就会被写满

磁盘空间利用率百分比

根据标签筛选,查询某一个分区的空间利用率

原理是:相同的分区,用总空间减去剩余空间得到使用空间,除以总空间得到利用率百分比

(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 简单用法的更多相关文章

  1. prometheus学习系列七: Prometheus promQL查询语言

    Prometheus promQL查询语言 Prometheus提供了一种名为PromQL (Prometheus查询语言)的函数式查询语言,允许用户实时选择和聚合时间序列数据.表达式的结果既可以显示 ...

  2. CATransition(os开发之画面切换) 的简单用法

    CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...

  3. jquery.validate.js 表单验证简单用法

    引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...

  4. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  5. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  6. Oracle的substr函数简单用法

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  7. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

  8. TransactionScope简单用法

    记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...

  9. WPF之Treeview控件简单用法

    TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...

随机推荐

  1. 《大数据实时计算引擎 Flink 实战与性能优化》新专栏

    基于 Flink 1.9 讲解的专栏,涉及入门.概念.原理.实战.性能调优.系统案例的讲解. 专栏介绍 扫码下面专栏二维码可以订阅该专栏 首发地址:http://www.54tianzhisheng. ...

  2. Windows 10 + kali Linux 双系统安装教程(详细版)

    准备工具如下: kali Linux 镜像 准备一4G以上的U盘 制作U盘启动盘工具- Win32DiskImager 添加引导工具-EasyBCD 留出一个空的盘,哪个盘的空间比较大可以压缩出大概2 ...

  3. 在VMware下通过挂载系统光盘搭建本地yum仓库的方法

    一.虚拟机的安装 首先你要有一个VMware虚拟机,没有软件的朋友可以看我的前几篇博客 安装VMware虚拟机 二.进入虚拟机(在这里我们进入一个Linux虚拟机下的CentOS操作系统进行演示) 首 ...

  4. 心脏滴血漏洞复现(CVE-2014-0160)

    心脏滴血漏洞简述 2014年4月7日,OpenSSL发布安全公告,在OpenSSL1.0.1版本至OpenSSL1.0.1f Beta1版本中存在漏洞,该漏洞中文名称为心脏滴血,英文名称为HeartB ...

  5. 【XSY1986】【BZOJ1455】罗马游戏

    就是一模板题. 合并就直接merge. pop就是将自己的值设为一,再将自己的左右儿子合并即可. 查询直接找到堆顶,输出. 模板左偏树 代码: #include<bits/stdc++.h> ...

  6. SpringBoot正确打日志的姿势

    前篇 Spring Boot 日志处理你还在用Logback? 本文简介 前篇侧重 Log4j2 的配置,本篇侧重统一日志处理的应用,以下包含 HTTP 请求的日志处理.Exception 异常日志处 ...

  7. 水管局长数据加强版:lct,时光倒流,最小生成树,边化点

    Description: SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到 ...

  8. CSPS模拟 57

    rank4大众rank T1 天空龙 让他自由翱翔吧 T2 巨神兵 对于n=10的测试点本可以打出非常优秀的分层状压 但是没有打出来,因为对拓扑图理解不够深刻,纠结于指回的边,实际上只关注伸出的边就可 ...

  9. 转载: ubuntu13.04下载android4.0.1源码过程

    转自:http://blog.csdn.net/zhanglongit/article/details/9263009,中间有些不行的地方进行了些小修改. 最初我参考的是老罗的博客http://blo ...

  10. Python3安装目录介绍

    目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构. 假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了: Foo/ |-- bin/ | ...