• prometheus中PromQL查询语言


    一、什么是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个样本指标来计算区间的增长率,反应的是瞬时的变化,可以比较好的反应样本的瞬时状态的变化,适用于快速变化的计数器 

  • 相关阅读:
    基于Unity3D开发的3D小游戏牧师与魔鬼
    TypeScript 泛型
    mysql之MHA的高可用
    1028模拟赛-考后总结
    微信小程序源码-高校学生事务管理系统的计算机毕业设计(附源码+演示录像+LW)
    强化学习——Q-Learning算法原理
    【VS2022】Microsoft 源代码注释语言 SAL
    抖音小程序开发教学系列(4)- 抖音小程序组件开发
    创建云端服务器
    万字详解 Google Play 上架应用标准包格式 AAB
  • 原文地址:https://blog.csdn.net/weixin_41910699/article/details/127651264