一、数学运算符

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

  1. + (加法)
  2. - (减法)
  3. * (乘法)
  4. / (除法)
  5. % (求余)
  6. ^ (幂运算)
  • 获取当前主机可用的内存空间大小,其样本单位为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

  2. 如果是在两个标量之间使用布尔运算,则必须使用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

相关文章: