在处理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]
Screen Shot 2021-06-09 at 21.14.33.png

有四个数字显示,每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])
Screen Shot 2021-06-09 at 21.39.32.png

在先前的Range vector示例中,输出了四个数据,但这次将它们汇总为一个平均增长率。

{cpu="0", env="development", instance="example.com:9100", job="node", mode="idle"}
0.997555555568801

顺便提一下,除了rate函数之外,还有一个叫做irate的函数。然而,irate函数应该只用于观测突发的尖峰等,而在警报等场景中应该使用rate函数。

广告
将在 10 秒后关闭
bannerAds