PromQL 是 Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在 Prometheus 的日常应用当中,包括对数据查询、可视化、告警处理当中。可以这么说,PromQL 是 Prometheus 所有应用场景的基础,理解和掌握 PromQL 是 Prometheus 入门的第一课。
up
在 prometheus 的 graph 界面执行单独的一条语句 up ,可以查询到所有监控实例的状态,为1则正在被监控,为0,实例状态故障

瞬时向量与范围向量
瞬时向量:获取当前最新的查询数据,也就是直接执行指标名称查询出来的数据即为当前瞬时向量数据

范围向量:获取某个范围时间段指标的查询数据,范围向量一般用来计算平均值。

条件过滤,比如获取某台节点的空闲 cpu,也可以直接在花括号后接时间范围

常用操作符
类似这种操作符,在每个语言中几乎都可以包含
| 类型 | 操作符 | 
|---|---|
| 比较操作符 | = != > < >= <= | 
| 算术操作符 | + - * / | 
| 正则匹配操作符 | = ! | 
| 聚合操作符 | sum():求和 max():最大值 min():最小值 avg():平均值 count():统计数量 | 
| 逻辑操作符 | and or | 
比较操作符
如:以上查询空闲cpu,以下的语句则是查询非空闲cpu的监控数据
node_cpu_seconds_total{instance="192.168.1.11:9100",mode!="idle"}算术操作符
用来计算一些资源使用率,cpu 使用率,内存使用率,硬盘使用率等
如:5分钟内cpu的平均使用率
# 5分钟之内192.168.1.11节点,空闲cpu的使用
node_cpu_seconds_total{instance="192.168.1.11:9100",mode="idle"}[5m]
# 5分钟之内192.168.1.11节点,空闲cpu的使用的变化速率
irate(node_cpu_seconds_total{instance="192.168.1.11:9100",mode="idle"}[5m])**函数 irate()**:通过 irate 函数绘制的图标能够更好的反应样本数据的瞬时变化状态,计算指标在一定时间间隔内的变化速率

聚合操作符
以上的数值是 4 核cpu的空闲cpu,如果要获取到这台机器,cpu的使用率,就应该从平均值下手
avg(irate(node_cpu_seconds_total{instance="192.168.1.11:9100",mode="idle"}[5m]))
值为 0.86 ,对于计算使用率来说,我们需要的是百分比的数据会更加直观一点,加入算术操作符,将该值乘100,并用100减去这个数值,将会得到的是这台机器5分钟内cpu的使用率
100 - avg(irate(node_cpu_seconds_total{instance="192.168.1.11:9100",mode="idle"}[5m])) * 100正则匹配操作符
其实基本上正则的使用和 LogQL 的语法是一致的:
https://www.feiyiblog.com/2021/10/11/Loki%E7%9A%84LogQL%E6%9F%A5%E8%AF%A2%E8%AF%AD%E6%B3%95/
这里以 dashboard 里面的一个 sql 为例
node_filesystem_avail_bytes{instance=~"$node",mountpoint="$maxmount",fstype=~"ext4|xfs"}fstype=~"ext4|xfs" 这部分使用了正则
逻辑操作符
用的比较少,遇到再说吧~
 
          
          
          
         
    
    
    
   
       
            
               
            
           
          
         
          
         
          
        