一、数学运算符
PromQL支持的所有数学运算符如下所示:
- + (加法)
- - (减法)
- * (乘法)
- / (除法)
- % (求余)
- ^ (幂运算)
-
获取当前主机可用的内存空间大小,其样本单位为Bytes。换算成MB:
node_memory_free_bytes_total / (1024 * 1024)
二、使用比较运算过滤时间序列
Prometheus支持以下布尔运算符如下:
- == (相等)
- != (不相等)
- `> (大于)
- < (小于)
- `>= (大于等于)
- <= (小于等于)
-
获取当前内存使用率超过95%的主机:
(node_memory_bytes_total - node_memory_free_bytes_total) / node_memory_bytes_total > 0.95
三、布尔运算符依次比较过滤瞬时向量
-
查询当前模块的HTTP请求量是否>=1000,如果大于等于1000则返回1(true)否则返回0(false)。
http_requests_total > bool 1000
-
如果是在两个标量之间使用布尔运算,则必须使用bool修饰符
2 == bool 2
# 结果为1
四、集合运算符
- Prometheus支持and (并且)、or (或者)、unless (排除)以下集合运算符:
- vector1 and vector2:产生的新向量包含vector1和vector2中的公共元素。
- vector1 or vector2:产生的新向量包含vector1和verctor2中的所有元素
- vector1 unless vector2:产生的新向量包含除了verctor1和verctor2中所有元素。
五、操作符优先级
-
在PromQL操作符中优先级由高到低依次为:
^
*, /, %
+, -
==, !=, <=, <, >=, >
and, unless
or