数据样本

          

Promql基础语法2_时间序列

        直方图类型

           

Promql基础语法2_时间序列_02

           delta函数

             

Promql基础语法2_匹配模式_03

 运算操作

        

Promql基础语法2_匹配模式_04

       

Promql基础语法2_布尔运算_05

        

Promql基础语法2_时间序列_06

 数学运算

       node_disk_info / 100

      当瞬时向量与标量之间进行数学运算时,数学运算符会依次作用域瞬时向量中的每一个样本值,从而得到一组新的时间序列

    

Promql基础语法2_布尔运算_07

     

Promql基础语法2_时间序列_08

     瞬时向量与瞬时向量之间进行数学运算

     依次找到与左边向量元素匹配(标签完全一致)的右边向量元素进行运算,如果没找到匹配元素,则直接丢弃。同时新的时间序列将不会包含指标名称

     

Promql基础语法2_时间序列_09

     

Promql基础语法2_匹配模式_10

    

Promql基础语法2_时间序列_11

    布尔运算过滤时间序列

     (node_memory_MemTotal_bytes - node_memory_MemFree_bytes) / node_memory_MemTotal_bytes > 0.95

     瞬时向量与标量进行布尔运算时,PromQL依次比较向量中的所有时间序列样本的值,如果比较结果为true则保留,反之丢弃
     瞬时向量与瞬时向量直接进行布尔运算时,同样遵循默认的匹配模式:依次找到与左边向量元素匹配(标签完全一致)的右边向量元素进行相应的操作,如果没找到匹配元素,则直接丢弃

      

Promql基础语法2_匹配模式_12

    

Promql基础语法2_时间序列_13

 集合运算符

       使用瞬时向量表达式能够获取到一个包含多个时间序列的集合,我们称为瞬时向量
       左结合定律,以左边的向量结果集合为参照标准

       vector1 and vector2 会产生一个由vector1的元素组成的新的向量。该向量包含vector1中完全匹配vector2中的元素组成
       vector1 or vector2 会产生一个新的向量,该向量包含vector1中所有的样本数据,以及vector2中没有与vector1匹配到的样本数据
       vector1 unless vector2 会产生一个新的向量,新向量中的元素由vector1中没有与vector2匹配的元素组成

 向量匹配模式解析

           向量与向量之间进行运算操作时会基于默认的匹配规则:依次找到与左边向量元素匹配(标签完全一致)的右边向量元素进行运算,如果没找到匹配元素,则直接丢弃
           左边向量元素为基础,左右不匹配的记录全部删除
           在PromQL中有两种典型的匹配模式:一对一(one-to-one) 没有用到group就是一对一匹配

       

Promql基础语法2_匹配模式_14

    多对一(many-to-one)或一对多(one-to-many)

          多对一和一对多两种匹配模式指的是“一”侧的每一个向量元素可以与"多"侧的多个元素匹配的情况.在这种情况下,必须使用group修饰符:group_left或者group_right来确定哪一个向量具有更高的基数(充当“多”的角色)

          method_code:http_errors:rate5m / ignoring(code) group_left method:http_requests:rate5m
          group_left    表示左边向量多       左边的多条记录对应右边的一条记录
          group_right  表示右边向量多       左边的一条记录对应右边的多条记录

          

Promql基础语法2_布尔运算_15

聚合函数

     count_values用于时间序列中每一个样本值出现的次数。count_values会为每一个唯一的样本值输出一个时间序列,并且每一个时间序列包含一个额外的标签

     统计同一个value值出现的次数

     

Promql基础语法2_布尔运算_16

      

Promql基础语法2_时间序列_17

 分位数统计

          Histogram和Summary都可以用于统计和分析数据的分布情况。区别在于Summary是直接在客户端计算了数据分布的分位数情况。而Histogram的分位数计算需要通过histogram_quantile(φ float, b instant-vector)函数进行计算。其中φ(0<φ<1)表示需要计算的分位数,如果需要计算中位数φ取值为0.5

        需要注意的是通过histogram_quantile计算的分位数,并非为精确值,而是通过prometheus_http_request_duration_seconds_bucket和prometheus_http_request_duration_seconds_sum近似计算的结果

        通过对Histogram类型的监控指标,用户可以轻松获取样本数据的分布情况

动态标签替换

     

Promql基础语法2_匹配模式_18

     

Promql基础语法2_布尔运算_19

     

Promql基础语法2_匹配模式_20

     

Promql基础语法2_时间序列_21

       

Promql基础语法2_布尔运算_22