当前位置:   article > 正文

prometheus中PromQL查询语言_prometheus sql

prometheus sql

一、什么是PromQL

二、PromQL基础

三、PromQL常用聚合函数

四、PromQL小案例


一、什么是PromQL

        PromQL是prometheus内置的数据查询语言,我们知道,Prometheus本质是内置了一个时序数据库,通过对抓取的指标数据存储到数据库中,然后再grafana等web端进行回放历史数据

        PromQL广泛应用于以Prometheus的监控体系中,只要用到数据的过滤、筛选,就要用PromQL来实现,我们的监控指标获取、告警指标设置、rules等都要通过它来实现

二、PromQL基础

        2.1 PromQL数据类型

        类型一: instant vector        即时向量,也称为瞬时向量

                表示当前时刻的数据,一组时间序列数据,共享相同的时间戳

                案例: node_cpu_seconds_total

        类型二:range vector         范围向量,也称为区间向量

                表示某一个时间范围内的数据

                案例: node_cpu_seconds_total[5m]

        类型三:scalar        简单数据,一个简单的数字浮点值

                简单数据没有时间属性,每个时间点的数值都一致。

                案例:插叙CPU使用的时间,所有标签的个数等

        类型四:字符串值        尚未使用

        2.2 标签匹配运算符

=        相等

!=        不等

=~        正则匹配

!~        选择与提供的字符串不匹配

案例:

node_cpu_seconds_total{cpu="0"}

node_cpu_seconds_total{cpu!="0"}

node_cpu_seconds_total{cpu="0",mode=~"i.*"}

node_cpu_seconds_total{cpu="0",mode!~"i.*"}

         2.3 比较运算符

#与常识中的数值比较相同

==

!=

>

<

>=

<=

案例:

node_cpu_seconds_total == 0
node_cpu_seconds_total != 0 

node_cpu_seconds_total>0

node_cpu_seconds_total>=0

         2.4 逻辑运算符与或非

and             与

or                或

unless        非

        2.5 数值计算

 +

-*

/

%        

         2.6 布尔值运算

bool

案例一:

node_cpu_seconds_total> 20                #返回大于20的指标

node_cpu_seconds_total> bool 20        #大于20的返回1,小于20返回0

 三、PromQL常用函数

sum:         求和汇总

increase    求增长

count:        计数

min:        最小

max:        最大

avg:        平均

topk:        取前面几个较大的值

bottomk: 取后面几个较小的值

rate:        平均每秒增长率

irate:        每秒瞬时增长率

ceil:            向上取整

floor:        向下取整

sort:        从小到大排序

sort_desc:        从大到小排序

四、PromQL小案例 

4.1        求CPU第一个核内核态在使用时间上过去一分钟的增长量

 

 4.2 计算第一个核内核态的使用时间在过去一分钟内每秒的平均增速

 

 4.3 计算CPU第一个核心在内核态过去一分钟的每秒瞬时增长率

 

 4.4 向上取整 ceil

       向下取整 floor

        四舍五入round

 

 

 4.5 排序 sort 以及sort_desc

 

 

 4.6 取值

topk

bottomk

 

 

rate和irate的区别

rate是取指定时间范围内的指标数据,然后计算平均值,例如1分钟,按照15秒抓取一次,然后会有2个指标,然后计算平均值。这种计算方式容易陷入“长尾问题”,无法反应突出的变化,适用于缓慢变化的计数器

irate是通过指定时间范围内的最后2个样本指标来计算区间的增长率,反应的是瞬时的变化,可以比较好的反应样本的瞬时状态的变化,适用于快速变化的计数器 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/517436
推荐阅读
相关标签
  

闽ICP备14008679号