Prometheus PromQL语法

振鹭7个月前技术文章356
一、PromQL语法
1.1、数据类型
PromQL 表达式计算出来的值有以下几种类型:
  • 瞬时向量 (Instant vector)

  • 区间向量 (Range vector)

  • 标量数据 (Scalar)

  • 字符串 (String)

1.2、瞬时向量选择器
瞬时向量选择器用来选择一组时序在某个采样点的采样值。最简单的情况就是指定一个度量指标,选择出所有属于该度量指标的时序的当前采样值。比如下面的表达式:
apiserver_request_total
可以通过在后面添加用大括号包围起来的一组标签键值对来对时序进行过滤。比如下面的表达式筛选出了 job 为 kubernetes-apiservers,并且 resource为 pod的时序:
apiserver_request_total{job="kubernetes-apiserver",resource="pods"}
匹配标签值时可以是等于,也可以使用正则表达式。总共有下面几种匹配操作符:
=:  完全相等
!=: 不相等
=~: 正则表达式匹配
!~: 正则表达式不匹配
下面的表达式筛选出了container是kube-scheduler或kube-proxy或kube-apiserver的时序数据
container_processes{container=~"kube-scheduler|kube-proxy|kube-apiserver"}
1.3、区间向量选择器
区间向量选择器类似于瞬时向量选择器,不同的是它选择的是过去一段时间的采样值。可以通过在瞬时向量选择器后面添加包含在 [] 里的时长来得到区间向量选择器。比如下面的表达式选出了所有度量指标为apiserver_request_total且resource是pod的时序在过去1 分钟的采样值。
这个不支持Graph,需要选择Console,才会看到采集的数据
apiserver_request_total{job="kubernetes-apiserver",resource="pods"}[1m]
说明:时长的单位可以是下面几种之一:
s:seconds
m:minutes
h:hours
d:days
w:weeks
y:years
1.4、偏移向量选择器
前面介绍的选择器默认都是以当前时间为基准时间,偏移修饰器用来调整基准时间,使其往前偏移一段时间。偏移修饰器紧跟在选择器后面,使用 offset 来指定要偏移的量。比如下面的表达式选择度量名称为apiserver_request_total的所有时序在 5 分钟前的采样值。
apiserver_request_total{job="kubernetes-apiserver",resource="pods"} offset 5m
下面的表达式选择apiserver_request_total 度量指标在 1 周前的这个时间点过去 5 分钟的采样值。
apiserver_request_total{job="kubernetes-apiserver",resource="pods"} [5m] offset 1w
1.5、聚合操作符
PromQL 的聚合操作符用来将向量里的元素聚合得更少。总共有下面这些聚合操作符
sum:求和
min:最小值
max:最大值
avg:平均值
stddev:标准差
stdvar:方差
count:元素个数
count_values:等于某值的元素个数
bottomk:最小的 k 个元素
topk:最大的 k 个元素
quantile:分位数
1)计算k8s-master1节点所有容器总计内存:
sum(container_memory_usage_bytes{instance=~"k8s-master1"})/1024/1024/1024
2)计算k8s-master1节点最近1m所有容器cpu使用率
sum (rate (container_cpu_usage_seconds_total{instance=~"k8s-master1"}[1m])) / sum (machine_cpu_cores{ instance =~"k8s-master1"}) * 10
1.6、函数
Prometheus 内置了一些函数来辅助计算,下面介绍一些典型的。
abs():绝对值
sqrt():平方根
exp():指数计算
ln():自然对数
ceil():向上取整
floor():向下取整
round():四舍五入取整
delta():计算区间向量里每一个时序第一个和最后一个的差值
sort():排序


相关文章

Redis 持久化机制 RDB

Redis 持久化机制 RDB

前言Redis 有两种持久化机制,分别是 RDB 与 AOF 本篇文章将介绍 RDB 的执行过程与应用。1. RDB 简介RDB 持久化是把当前进程数据生成快照保存到硬盘的过程,触发 RDB 持久化过...

MySQL运维实战(5.3) MySQL数据乱码的一些情况

MySQL运维实战(5.3) MySQL数据乱码的一些情况

表数据乱码当数据的真实编码和相关参数(常见的包括character_set_client, character_set_result, 字段的编码,终端的编码)不一致时,会产生乱码。测试1 - 表中的...

开源大数据集群部署(十九)Hbase部署

开源大数据集群部署(十九)Hbase部署

2.8 HBASE 安装部署hbase组件部署主机HMasterhd1.dtstack.comhd2.dtstack.comHRegionServerhd3.dtstack.com,hd2.dtsta...

Redis 运维规范_运维管理规范

三、运维管理规范1、密码认证 云上 Redis 的权限控制:账号管理+白名单设置+阿里云子账号权限。对于线下 Redis 可以通过设置密码和 bind 参数文件控制访问。2、合理设置备份策略 Redi...

MySQL排障实战(一)—— 连接异常中断

MySQL排障实战(一)—— 连接异常中断

问题背景数栈数据质量模块,接入客户的数据源后,一执行就报错。报错信息:{"logInfo": {{"jobid":"1a4ebbbd&quo...

flink web监控

flink web监控

1.1 监控指标进入Flink的原生页面,需要从yarn的原生页面的后台链接进入,如下图:这里必须要用supergroup组的用户或者flink提交任务的用户(如果该用户是机机用户不能登录)才能够看到...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。