在处理PromQL之前,最好了解一些最基本的知识
目录
- [目次] Prometheusで監視システムを作る with Docker
总结
在使用Prometheus编写PromQL之前,建议先对以下术语和知识有最基本的理解。
相关文章 (Guanlian Wenzhang)
使用Prometheus和Node Exporter来监控CPU、内存和磁盘
即时向量
时间序列数据。
范围向量
目前收集的数据是一个时间段内的Instant vector值。数据可以用[1m]等表示,如果使用[5m],则表示过去5分钟的数据。还可以指定其他以下单位的数据。
-
- ms – milliseconds
-
- s – seconds
-
- m – minutes
-
- h – hours
-
- d – days – assuming a day has always 24h
-
- w – weeks – assuming a week has always 7d
- y – years – assuming a year has always 365d
请参考以下链接:https://prometheus.io/docs/prometheus/latest/querying/basics/#range-vector-selectors
以下的例子展示了如何使用PromQL获取从现在到1分钟前的CPU使用时间的累计值。
node_cpu_seconds_total[1m]
有四个数字显示,每15秒取一次数据,所以一分钟就有四个。
这四个数据分别表示CPU的累计使用时间@测量时间。
看数据。
node_cpu_seconds_total{cpu="0", env="development", instance="example.com:9100", job="node", mode="idle"}
18039154.58 @1623240806.473 => 6.8642065491192(ヶ月)@2021/06/09 21:13:26
18039169.54 @1623240821.473 => 6.8642122416548(ヶ月)@22021/06/09 21:13:41
18039184.5 @1623240836.473 => 6.86421793419(ヶ月)@22021/06/09 21:13:56
18039199.45 @1623240851.473 => 6.8642236229208(ヶ月)@22021/06/09 21:14:11
可以确认测量日期时间是否正确,因为在2021/06/09 21:15左右执行了该PromQL。
CPU使用时间的累计,根据PromQL的结果约为6.8个月。
查看此CentOS服务器中启动Prometheus的日期,可以使用以下Shell脚本,结果为2020/11/11。
$ date --date=@$(expr `date +%s` - `cut -d "." -f 1 /proc/uptime`)
Wed Nov 11 15:46:02 JST 2020
根据今天是2021/06/09这个日期,可以确认2020/11/11已经大约是6.8个月之前了,同时也能验证CPU使用时间的累计是准确的。
评级函数
rate函数用于计算某一时间段内时间序列数据的每秒平均增长率。
参考:https://prometheus.io/docs/prometheus/latest/querying/functions/#rate
以下是用PromQL计算从当前时间到1分钟前的CPU使用时间的累积值每秒的平均增长率。
rate(node_cpu_seconds_total[1m])
在先前的Range vector示例中,输出了四个数据,但这次将它们汇总为一个平均增长率。
{cpu="0", env="development", instance="example.com:9100", job="node", mode="idle"}
0.997555555568801
顺便提一下,除了rate函数之外,还有一个叫做irate的函数。然而,irate函数应该只用于观测突发的尖峰等,而在警报等场景中应该使用rate函数。