metrics:114.55.148.180:9100/metrics grafana:http://114.55.148.180:3001/ prometheus:http://114.55.148.180:9090/
目录
ToggleProm QL语句
1 prometheus metrics type
prometheus监控中采集过来的数据统一称为Metrics数据,其并不是代表具体的数据格式,而是一种统计度量计算单位。
当我们需要为某个系统或者某个服务做监控时,就需要使用到metrics。
prometheus支持的metrics包括但不限于以下几种数据类型:
guage:
所见即所得
最简单的度量指标,只是一个简单的返回值,或者叫瞬时状态。
比如说统计硬盘,内存等使用情况。
couter:
就是一个计数器,从数据量0开始累积计算,在理想情况下,只能是永远的增长,不会降低(有特殊情况,比如粉丝量)。
比如统计1小时,1天,1周,1一个月的用户访问量,这就是一个累加的操作。
histograms:
是统计数据的分布情况,比如最小值,最大值,中间值,中位数等,代表的是一种近似百分比估算数值。
通过histograms可以分别统计处在一个时间段(1s,2s,5s,10s)内nginx访问用户的响应时间。
summary:
summary是histograms的扩展类型,主要弥补histograms不足。
本。
2 PromQL初体验
2.1 查看某个特定的key
node_cpu_seconds_total
2.2 查看某个节点的指标
node_cpu_seconds_total{instance="10.0.0.41:9100"}
2.3 查看某个节点的某刻CPU的某种状态
node_cpu_seconds_total{instance="10.0.0.41:9100",cpu="0",mode="idle"}
2.4 查询最近10s内某个节点CPU的某种状态时间
node_cpu_seconds_total{instance="10.0.0.41:9100",cpu="0",mode="idle"}[10s]
2.5 统计1分钟内,使用标签过滤器查看”10.0.0.42:9100″节点的第0颗CPU,非空闲状态使用的总时间
node_cpu_seconds_total{mode!="idle",cpu="0", instance="10.0.0.42:9100"}[1m]
2.6 统计1分钟内,使用标签过滤器查看”10.0.0.42:9100″节点的第0颗CPU,mode名称以字母”i”开头的所有CPU核心。
node_cpu_seconds_total{mode=~"i.*",cpu="0", instance="10.0.0.42:9100"}[1m]
2.7 统计1分钟内,使用标签过滤器查看”10.0.0.42:9100″节点的第0颗CPU,mode名称不是以字母”i”开头的所有CPU核心。
node_cpu_seconds_total{mode!~"i.*",cpu="0", instance="10.0.0.42:9100"}[1m]
统计cpu繁忙程度:
先进行cpu压力测试(stress 命令)10分钟,内存只占256M
stress –cpu 8 –io 4 –vm 2 –vm-bytes 128M –timeout 10m
验证繁忙程度:
prometheus查询cpu:node_cpu_seconds_total为key,{}里面叫做标签选择器–用于过滤指标,cpu选择1,[10m]10分钟内
查询114.55.148.180这台机器第1颗cpu十分钟内CPU使用的总时间:node_cpu_seconds_total{instance=”114.55.148.180:9100″,cpu=”1″}[10m]
查看数据中代表的时间 date -s "@1749997721" -R
Sun, 15 Jun 2025 22:28:41 +0800
当前时间 date
Sun Jun 15 10:28:44 PM CST 2025
3 Prometheus常用的函数
3.1 increase
increase函数:
用来针对counter数据类型,截取其中一段时间总的增量。
举个例子:
increase(node_cpu_seconds_total{mode=”idle”,cpu=”0″, instance=”10.0.0.42:9100″}[1m])
统计1分钟内,使用标签过滤器查看”10.0.0.42:9100″节点的第0颗CPU,空闲状态使用的总时间增量。
3.2 sum
sum函数: 加和的作用。
举个例子:
sum(increase(node_cpu_seconds_total{mode=”idle”,cpu=”0″}[1m]))
统计1分钟内,使用标签过滤器查看所有节点的第0颗CPU,空闲状态使用的总时间增量,并将返回结果累加。
3.3 by by函数:按照括号内的值进行分组
将数据进行分组,类似于MySQL的”GROUP BY”。
举个例子:
sum(increase(node_cpu_seconds_total{mode=”idle”}[1m])) by (instance)
统计1分钟内,使用标签过滤器查看CPU空闲状态,并将结果进行累加,基于instance进行分组。
3.4 rate
rate函数:
它的功能是按照设置的时间段,取counter在这个时间段中平均每秒的增量。
举个例子:
rate(node_cpu_seconds_total{mode=”idle”,cpu=”0″, instance=”10.0.0.42:9100″}[1m])
统计1分钟内,使用标签过滤器查看”10.0.0.42:9100″节点的第0颗CPU,空闲状态使用的每秒的增量。
increase和rate如何选择:
(1)对于采集数据频率较低的场景建议使用increase函数,
因为使用rate函数可能会出现断点,比如针对硬盘容量监控。
(2)对于采集数据频率较高的场景建议使用rate函数,
比如针对CPU,内存,网络流量等都是可以基于rate函数来采集等。
3.5 topk
topk函数:
取前几位的最高值,实际使用的时候一般会用该函数进行瞬时报警,而不是为了观察曲线图。
举个例子:
topk(3, rate(node_cpu_seconds_total{mode=”idle”}[1m]))
统计1分钟内,使用标签过滤器查看CPU,所有状态使用的每秒的增量,只查看前3个节点。按照空闲时间排序,越闲的cpu数值越高
3.6 count
count函数:
把数值符合条件的,输出数目进行累加加和。
比如说企业中有100台服务器,如果只有10台服务器CPU使用率高于80%时候是不需要报警的,但是数量操作70台时就需要报警了。
举个例子:
count(oldboyedu_tcp_wait_conn > 500):
假设oldboyedu_tcp_wait_conn是咱们自定义的KEY。
若TCP等待数量大于500的机器数量就判断条件为真。
count(rate(node_cpu_seconds_total{cpu=”0″,mode=”idle”}[1m]))
对统计的结果进行计数。
count(rate(node_cpu_seconds_total{cpu=”0″,mode=”idle”}[1m]) > 0.5)
统计1分钟内编号为0空闲cpu每秒空闲大于0.5的节点有几个。
3.7 其他函数
推荐阅读:
https://prometheus.io/docs/prometheus/latest/querying/functions/