首页 > 其他分享 >3.Prometheus计算函数

3.Prometheus计算函数

时间:2023-01-23 15:23:23浏览次数:42  
标签:node 函数 sum rate increase Prometheus 计算 cpu

1.Prometheus监控cpu构思
2.函数rate()
3.函数irate()
4.函数rate()及irate()区别
5.函数increase()
6.函数sum()
7.函数by
8.topk()
9.count()

1.Prometheus监控cpu构思

%Cpu(s): 2.2 us, 1.9 sy, 0.0 ni, 95.5 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st

cpu的使用率= (所有非空闲状态的cpu时间总和)/(所有状态cpu的时间总和)

(1-((sum(increase(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)) / (sum(increase(node_cpu_seconds_total[5m])) by (instance)))) * 100

(sum(increase(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance) / sum(increase(node_cpu_seconds_total[5m])) by (instance) )* 100

2.函数rate()

rate()
rate函数,rate用来计算两个 间隔时间内发生的变化率(一段时间内平均每秒的增量)。
专门用来搭配Counters类型的数据,rate(指标名{筛选条件}[时间间隔])

比如 查看1分钟内非idle的cpu使用率

rate(node_cpu_seconds_total{mode!="idle"}[1m])

rate()举例:

1分钟内 增加了 1000bytes (假设)
5分钟内 增加了 5000bytes (假设)
会把1000bytes除以 1m60秒,=~16bytes/s 就是这样计算出在这1分钟内,平均每秒钟增加 16bytes
把5分钟内的增量 除以 5m
60s ,5分钟的增量 假如是 5000 , 那么除以300 以后 也还是约等于 =~ 16bytes/s

以上两种时间段的取法,都是假设成⼀种平均的取法,这是一种假设的理想状态,事实上生产环境 网络数据接收量 可不是这么平均的。有可能在 第一分钟 增加了 1000, 到 第二分钟 就变成增加了2500….

所以 rate(1m) 这样的取值方法比起 rate(5m) ,因为它取的时间段短,所以 任何某⼀瞬间的凸起或者降低在成图的时候会体现的更细致 更敏感而rate(5m)把整个5分钟内的都⼀起平均了,那么当发生瞬时凸起的时候,会显得图平缓了⼀些 (因为 取的时间段长 把波峰波谷都给平均消下去了)

3.函数irate()

irate取的是在指定时间范围内的最近两个数据点来算速率,而rate会取指定时间范围内所有数据点,算出一组速率,然后取平均值作为结果。

sum(irate(node_cpu_seconds_total{mode!="idle"}[1m])) by (instance)

4.函数rate()及irate()区别

irate适合快速变化的计数器(counter),而rate适合缓慢变化的计数器(counter)。
根据以上算法我们也可以理解,对于快速变化的计数器,如果使用rate,因为使用了平均值,很容易把峰值削平。除非我们把时间间隔设置得足够小,就能够减弱这种效应。

相同函数,截取不同时间的图形分析:

rate(node_network_receive_bytes_total[1m])

5.函数increase 截取数值一段时间内增量

increase()
increase 函数 在promethes中,是用来针对Counter 这种持续增长的数值,截取其中⼀段时间的 增量(一段时间内的总增量)
increase(node_cpu_seconds_total[1m]) --> 这样 就获取了 CPU总使用时间在1分钟内的增量

6.sum统计数值总量

sum( )
比如上面得到各个指标的cpu使用率,如果我想计算总的cpu使用率怎么办?
sum( ) 就如其字⾯意思⼀样 起到value 加合的作用 sum( increase(node_cpu_seconds_total[1m]) ) 外⾯套⽤⼀个sum 即可把所有核数值加合
问题1:所有机器的CPU 也全都加到⼀起了,变成 服务器集群 总CPU平均值了?

7.by ()聚合

by (instance) 这个函数 可以把 sum加合到⼀起的数值 按照指定的⼀个方式进行一层的 拆分
instance 代表的是 机器名
意思就是说 把sum函数中 服务器加合的这个糗事 再给它强行拆分出来

sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)


sum() by (cluster_name) 可以帮我们实现集群加合并分三条曲线输出了,顺带一提的是 (cluster_name) 这个标签,默认node_exporter是没有办法提供的,node_exporter只能按照不同的机器名去划分。如果希望支持cluster_name 我们需要自行定义标签。

topk()

topk() 函数的定义是:取前面x位的最高值,最简单理解就是数学的top,当我们有很多服务器我们想要获取某个key的数据排在前3位的服务器。

Gauge类型使用方式:

topk(3,key)
Counter类型使用方式

topk(3,rate(key[1m]))
注意:此种函数获得数据并不是很适用图形化展示,实际使用的时候 ⼀般用topk()函数 进行瞬时报警而不是为了观察曲线图

count

count()
定义: 把数值符合条件的 输出数目进行加合
例如:找出当前(或者历史的)当数值数大于2000的机器数量

标签:node,函数,sum,rate,increase,Prometheus,计算,cpu
From: https://www.cnblogs.com/yangtao416/p/17065190.html

相关文章

  • 聚合函数
    聚合函数(多行处理函数)当行处理函数:接受一个参数,返回一个结果多行处理函数:接受多个参数,返回一个结果什么是聚集函数聚集函数作用于一组数据,并对一组数据返回一个值常用......
  • 2.Prometheus的Relabeling机制(标签的增删改查)
    1.Relabeling标签重写介绍2.relabel功能详解3.标签增删改查3.1使用keep对标签值进行匹配保留regex的targets3.2使用drop对标签值进行匹配删除regex的targets3.3使用......
  • 数据库基础篇(函数,约束)
    函数字符串函数数值函数日期函数流程函数字符串函数常用函数:函数功能CONCAT(s1,s2,…,sn)字符串拼接,将s1,s2,…,sn拼接成一个字符串LOWER(str)将字符串全部转为小写UP......
  • 软件的基本是要处理好”算法“及其基础(三)delphi 10.4.1字符串工具单元及其函数
     //:关于字符串的定义: _RawByteStr=RawByteString; {$IFDEFNEXTGEN}   UTF8String=type_AnsiString(65001);   RawByteString=type_AnsiString($f......
  • 读函数式编程思维笔记04_语言与范式_模式与重用
    1. 语言的分类1.1. 静态类型1.1.1. 要求我们事先指定变量和函数的类型1.2. 动态类型1.2.1. 允许推迟指定类型1.3. 强类型1.3.1. 变量“知道”自己的类型1.3......
  • PyQt5 表格的一些参数设置函数
    self.tablewidget.horizontalHeader().setDefaultSectionSize(50) #设置默认列宽self.tablewidget.verticalHeader().setDefaultSectionSize(30)  #设置默认行高s......
  • 第七章 动态函数
    当条件变化时,输出可以随之变化本章主要介绍FILTER函数(EXCEL2021才有)与SUBTOTAL函数1、FILTER函数依据条件筛选数据FILTER(数据区,筛选条件,[无合适结果时返回的值])e......
  • 利用java来实现计算器的加减乘除
    packagebag; importjava.util.Scanner; publicclassDemo06{ publicstaticvoidmain(String[]args){ Scannersc=newScanner(System.in);System......
  • MySQL单行函数详解
    ⭐本专栏针对MySQL中的范式、日志、SQL性能分析工具、存储引擎、优化场景、锁的应用、各种创建索引的规则等各方面进行剖析。......
  • 读函数式编程思维笔记03_权责让渡
    1. 观点1.1. 抽象隐藏了繁杂的细节,只是有时候会连同重要的考虑因素一起隐藏掉1.2. 理解掌握的抽象层次永远要比日常使用的抽象层次更深一层1.3. 交出控制权的观点:......