PromQL 是 Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在 Prometheus 的日常应用当中,包括对数据查询、可视化、告警处理当中。可以这么说,PromQL 是 Prometheus 所有应用场景的基础,理解和掌握 PromQL 是 Prometheus 入门的第一课。

up

在 prometheus 的 graph 界面执行单独的一条语句 up ,可以查询到所有监控实例的状态,为1则正在被监控,为0,实例状态故障

promql_up

瞬时向量与范围向量

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

promql_shun

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

promql_range

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

promql_grep

常用操作符

类似这种操作符,在每个语言中几乎都可以包含

类型 操作符
比较操作符 =
!=
>
<
>=
<=
算术操作符 +
-
*
/
正则匹配操作符 =
!
聚合操作符 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 函数绘制的图标能够更好的反应样本数据的瞬时变化状态,计算指标在一定时间间隔内的变化速率

promql_irate

聚合操作符

以上的数值是 4 核cpu的空闲cpu,如果要获取到这台机器,cpu的使用率,就应该从平均值下手

avg(irate(node_cpu_seconds_total{instance="192.168.1.11:9100",mode="idle"}[5m]))

promql_avg

值为 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" 这部分使用了正则

逻辑操作符

用的比较少,遇到再说吧~

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0