Prometheus是一套使用Go语言进行编写的监控工具,专注于基础监控。Prometheus有专门的PQL语言,可以对采集上来的指标进行多维度、函数分析,具有高度的指标定制化能力。本文分享一些基本的Prometheus的PQL语法。
1、瞬时向量查询
瞬时向量查询查看某个点的指标值,最基本一个用法是:matrics_name{lable1="xxx",lable2="yyy"}。标签匹配除支持正向全匹配(=)外,还支持正向模糊匹配(=~)、反向全匹配(!=)、反向模糊匹配(!~),以及多项匹配。以下是一些例子:
- 正向全匹配(比较符号为“=”)
- 正向模糊匹配(比较符号为“=~”,模糊匹配的部分用“.*”表示)
- 反向全匹配(比较符号为“!=”)
- 反向模糊匹配(比较符号为“!~”)
- 多值匹配(比较符号为“=~”或“!~”多个值之间用"|"分割)
2、区间向量查询
区间向量查询可以查出一个指标在指定时间段内的序列值(每个采集点一个指标值)。查询方法是加上区间,区间可以是分钟(m)、小时(h)、天(d)等。例如:
3、函数
Prometheus还提供了大量的内置函数,可以对时序数据进行丰富的处理,下面举几个简单的例子:
- 瞬时求和函数sum(可以用by指定求和条件,查询结果显示by中指定的lable)
- 区间向量求和函数sum_over_time
- 瞬时向量求最大值函数max
- 瞬时向量求最大值函数max_over_time
- 求变化率函数rate(可以指定求变化率的时间跨度即步长;为方便显示效果,下面用图标的形式显示查询结果)
- 多个函数叠加计算
PQL支持多个函数叠加计算,例如rate和max叠加:
4、结语
PQL语法非常丰富,基本能覆盖我们日常的统计监控需求,本文只是简单列举了一些基本用法,更多用法可参考prometheus官网。