文章目录

  • 一、指标类型
  • Counter和Gauge
  • Histogram
  • Summary
  • 二、11个聚合函数
  • 三、二元运算符的优先级
  • 四、基础资源
  • 5分钟内CPU使用率
  • 1分钟平均负载超过主机CPU数量两倍的时间序列
  • 计算CPU的数量
  • 内存使用率
  • 磁盘使用率
  • 五、正则匹配
  • 六、函数
  • hour()
  • rate()
  • 七、其他
  • [5m]
  • [5m] offset 1d
  • 参考



一、指标类型

prometheus之PromQL详解_运算符

Counter和Gauge

prometheus之PromQL详解_数据库_02

Histogram

prometheus之PromQL详解_聚合函数_03


prometheus之PromQL详解_时间序列_04

Summary

prometheus之PromQL详解_prometheus_05

二、11个聚合函数

prometheus之PromQL详解_聚合函数_06

三、二元运算符的优先级

prometheus之PromQL详解_数据库_07

四、基础资源

5分钟内CPU使用率

100 - avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100

prometheus之PromQL详解_聚合函数_08

1分钟平均负载超过主机CPU数量两倍的时间序列

node_load1 > on(instance) 2 * count(node_cpu_seconds_total{mode="idle"}) by(instance)

计算CPU的数量

count by (instance)(node_cpu_seconds_total{mode="idle"})

内存使用率

((node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes) * 100

prometheus之PromQL详解_运算符_09

磁盘使用率

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100
#使用正则表达式匹配多个挂载点
(node_filesystem_size_bytes{mountpoint="/|/run"} - node_filesystem_free_bytes{mountpoint="/|/run"}) / node_filesystem_size_bytes{mountpoint="/|/run"} * 100
#使用 predict_linear 函数来构建在未来什么时候会耗尽磁盘空间
predict_linear(node_filesystem_free_bytes{mountpoint="/"}[1h], 4* 3600) < 0

五、正则匹配

node_cpu_seconds_total{mode=~'s.*'}		#匹配以s开头的

六、函数

hour()

on() hour() >= 14 <= 23		# 表示时间范围为北京时间:8点—21点,严格时间为7:59—21:59

那么是如何计算的呢?
上面表示的是14点—23点,这是UTC时间,而北京时间要在这个基础上+8小时,也就是
>=22和<=7,但这里没有分钟,带上分钟应该为>=21:59和<=7:59,取反后,最终表达的北京时间为:7:59—21:59,也就是我们说的8点到21点

rate()

每一个时间点的值与前面的值作差,全部相加求平均值,得到一个即时向量,适用于变化比较慢的指标

七、其他

[5m]

代表过去5分钟内的范围向量

[5m] offset 1d

获取距此刻1天之前5分钟内的所有样本

参考

https://www.bilibili.com/video/BV1PT4y1P7bX/?p=3&vd_source=0467ab39cc5ec5940fee22a0e7797575