一、数学运算符

PromQL支持的所有数学运算符如下所示:

    • (加法)
    • (减法)
    • (乘法)
  1. / (除法)
  2. % (求余)
  3. ^ (幂运算)
  • 获取当前主机可用的内存空间大小,其样本单位为Bytes。换算成MB:

node_memory_free_bytes_total / (1024 * 1024)

二、使用比较运算过滤时间序列

Prometheus支持以下布尔运算符如下:

  1. == (相等)
  2. != (不相等)
  3. (大于)

  4. < (小于)
  5. = (大于等于)

  6. <= (小于等于)
  • 获取当前内存使用率超过95%的主机:

(node_memory_bytes_total - node_memory_free_bytes_total) / node_memory_bytes_total > 0.95

三、布尔运算符依次比较过滤瞬时向量

  1. 查询当前模块的HTTP请求量是否>=1000,如果大于等于1000则返回1(true)否则返回0(false)。

http_requests_total > bool 1000

  1. 如果是在两个标量之间使用布尔运算,则必须使用bool修饰符

2 == bool 2 # 结果为1

四、集合运算符

  1. Prometheus支持and (并且)、or (或者)、unless (排除)以下集合运算符:
  • vector1 and vector2:产生的新向量包含vector1和vector2中的公共元素。
  • vector1 or vector2:产生的新向量包含vector1和verctor2中的所有元素
  • vector1 unless vector2:产生的新向量包含除了verctor1和verctor2中所有元素。

    五、操作符优先级

  1. 在PromQL操作符中优先级由高到低依次为:

^
*, /, %
+, -
==, !=, <=, <, >=, >
and, unless
or