介绍
Prometheus提供一个函数式的表达式语言PromQL,可以使用户实时地查找和聚合时间序列产物。
节点部署情况
系统 | IP | 服务 |
---|---|---|
Ubuntu22.04 | 192.168.202.221 | Prometheus, grafana, blackbox exporter, node exporter |
Ubuntu22.04 | 192.168.202.222 | node exporter |
Ubuntu22.04 | 192.168.202.223 | node exporter |
Ubuntu22.04 | 192.168.202.224 | node exporter |
PromQL基本查询
示例一
node_memory_MemTotal_bytes 查询node节点内存大小
示例二
node_memory_MemFree_bytes 查询node节点剩余可用内存
示例三
node_memory_MemTotal_bytes{instance="192.168.202.221:9100"} 查询指定节点总内存
说明: {instance="192.168.202.221:9100"}中的为添加的其他查询条件
示例四
node_memory_MemFree_bytes{instance="192.168.202.221:9100"} 查询指定节点剩余内存大小
示例五
node_disk_io_time_seconds_total{device="sda"} 查询指定磁盘的磁盘IO
示例六
node_filesystem_free_bytes{device="/dev/sda3", fstype="ext4",mountpoint="/"} 查看指定磁盘剩余空间大小
示例七
node_load1 查看CPU一分钟的负载
PromQL数据类型
-
瞬时向量(instant vector): 是一组时间序列,每个时间序列包含单个数据样本,比如node_memory_MemTotal_bytes查询当前剩余内存就是一个瞬时向量,该表达式的返回值中只会包含该时间序列的最新的一个样本值,而相应的这样的表达式称之为瞬时向量表达式
-
范围向量(range vector): 是指在任何一个时间范围内,抓取的所有度量指标数据,比如最近一天的网卡流量
-
标量(scalar): 是一个浮点数类型的数据值。使用node_load1 获取到是一个瞬时向量,但是可以使用内置函数scalar()将瞬时向量转换为标量
-
字符串(string): 字符串类型的数据,目前使用较少
PromQL匹配器
sh
= 选择与提供的字符串完全相同的标签
!= 选择与提供的字符串不相同的标签
=~ 选择正则表达式与提供的字符串(或子字符串)相匹配的标签
!~ 选择正则表达式与提供的字符串(或子字符串)不匹配的标签
PromQL时间范围
sh
s 秒
m 分钟
h 小时
d 天
w 周
y 年
PromQL运算符
sh
+ 加法
- 减法
* 乘法
/ 除法
% 模
^ 幂
PromQL聚合运算
sh
sum() 求和
min() 最小值
max() 最大值
avg() 平均值
stddev() 标准差
stdvar() 标准差异、
count() 计数
count_values() 对value进行计数
bottomk() 样本值最小的k个元素
topk() 样本值最大的k个元素
quantile() 分布统计