Prometheus之PromQL语法详解及使用方法

本文是向大家介绍Prometheus中PromQL的查询语法以及常用语句,可以帮助大家理解和掌握Prometheus的查询语言。


1、简介

Prometheus是通过指标名称(metrics name)以及对应的一组标签(labelset)唯一定义一条时间序列。指标名称反映了监控样本的基本标识,而label则在这个基本特征上为采集到的数据提供了多种特征维度。用户可以基于这些特征维度过滤,聚合,统计从而产生新的计算后的一条时间序列。

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

2、数据类型

PromQL 表达式或子表达式包括以下四种类型:

  • 瞬时向量 (Instant vector): 一组时序,每个时序只有一个采样值

  • 区间向量 (Range vector): 一组时序,每个时序包含一段时间内的多个采样值

  • 标量 (Scalar): 一个简单的数字浮点值

  • 字符串 (String): 一个简单的字符串值

2.1、瞬时向量选择器

瞬时向量选择器用来选择一组时序在某个采样点的采样值。最简单的情况就是指定一个度量指标,选择出所有属于该度量指标的时序的当前采样值。比如下面的表达式:

apiserver_request_total

可以通过在后面添加用大括号包围起来的一组标签键值对来对时序进行过滤。比如下面的表达式筛选出了 job 为 kubernetes-apiservers,并且 resource为 pod的时序:

apiserver_request_total{job="apiserver",resource="pods"}

匹配标签值时可以是等于,也可以使用正则表达式。总共有下面几种匹配操作符:

  • =:完全相等

  • !=: 不相等

  • =~: 正则表达式匹配

  • !~: 正则表达式不匹配

下面的表达式筛选出了container是kube-scheduler或kube-proxy或kube-apiserver的时序数据

container_processes{container=~"kube-scheduler|kube-proxy|kube-apiserver"}

2.2、区间向量选择器

区间向量选择器类似于瞬时向量选择器,不同的是它选择的是过去一段时间的采样值。可以通过在瞬时向量选择器后面添加包含在 [] 里的时长来得到区间向量选择器。比如下面的表达式选出了所有度量指标为apiserver_request_total且resource是pod的时序在过去1 分钟的采样值。

这个不支持Graph,需要选择Console,才会看到采集的数据

apiserver_request_total{job="apiserver",resource="pods"}[1m]

说明:时长的单位可以是下面几种之一:

s:seconds

m:minutes

h:hours

d:days

w:weeks

y:years

2.3、偏移向量选择器

前面介绍的选择器默认都是以当前时间为基准时间,偏移修饰器用来调整基准时间,使其往前偏移一段时间。偏移修饰器紧跟在选择器后面,使用 offset 来指定要偏移的量。比如下面的表达式选择度量名称为apiserver_request_total的所有时序在 5 分钟前的采样值。

apiserver_request_total{job="apiserver",resource="pods"} offset 5m

3、聚合操作符

PromQL 内置的聚合操作符,这些操作符作用域瞬时向量。可以将瞬时表达式返回的样本数据进行聚合,形成一个新的时间序列。

  • sum (求和)

  • min (最小值)

  • max (最大值)

  • avg (平均值)

  • stddev (标准差)

  • stdvar (标准方差)

  • count (计数)

  • count_values (对value进行计数)

  • bottomk (后n条时序)

  • topk (前n条时序)

  • 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"}) * 100

3)计算最近1m所有容器cpu使用率

4、内置函数

Prometheus 内置了一些函数来辅助计算,下面介绍一些典型的函数。

  • abs():绝对值

  • sqrt():平方根

  • exp():指数计算

  • ln():自然对数

  • ceil():向上取整

  • floor():向下取整

  • round():四舍五入取整

  • delta():计算区间向量里每一个时序第一个和最后一个的差值

  • sort():排序

  • rate(): 计算整个时间范围内区间向量中时间序列的每秒平均增长率

  • irate(): 仅使用时间范围中的最后两个数据点来计算区间向量中时间序列的每秒平均增长率, irate 只能用于绘制快速变化的序列,在长期趋势分析或者告警中更推荐使用 rate 函数

  • increase(): 计算所选时间范围内时间序列的增量,它基本上是速率乘以时间范围选择器中的秒数

1)查看prometheus_http_requests_total ,平均数据向下取整

floor(avg(prometheus_http_requests_total{code="200"}))

2)查看prometheus_http_requests_total 5分钟内,平均每秒数据

rate(prometheus_http_requests_total{code="200"}[5m])

5、常用 PromQL语句

# Node 节点内存使用量

(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100

# Node 节点CPU使用率

100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100

# Node 节点启动状态

up == 1为启动,0为停止

# Node 节点IO性能

100-(avg(irate(node_disk_io_time_seconds_total[1m])) by(instance)* 100)

# Node 节点网卡出访流量

((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) * 100)

# Node 节点 TCP 会话处于established状态

node_netstat_Tcp_CurrEstab

# Node 节点磁盘使用量

100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4566.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何选择Facebook的各种广告形式来获取用户?

Facebook广告是吸引潜在客户的重要工具,但盲目投放广告却很难达到理想效果。在选择广告格式时,需要考虑到品牌和业务目标,以及目标受众的特征和偏好。下面介绍8种Facebook广告格式,不论您是想用视频、图片或文字,还是结…

云端Docker搭建ABY库以及本地CLion使用

文章目录ABY的搭建以及使用前言ABY库的下载、安装及测试CLion配置后续杂项项目改名使用其他的库最后ABY的搭建以及使用 前言 仅做记录,仅供参考,不同人有不同的使用方式命令手敲,可能有错,自己辨识勿问,我懂的也不多…

什么牌子的蓝牙耳机音质好又便宜?国产音质好的蓝牙耳机推荐

目前的蓝牙耳机市场涌现了越来越多的蓝牙耳机,不同价位主打不同的性能,有主打佩戴的,主打音质的,主打降噪的,主打游戏的等等。那么,什么牌子的蓝牙耳机音质好又便宜?针对这个问题,我…

Redis详解(redis线程模式、数据持久化机制、主从复制、缓存穿透、缓存击穿等)

一.redis概述redis主要用作数据库、缓存和消息中间件, 支持多种语言, 是基于内存的key-value数据结构存储系统. redis支持数据的持久化, 可以将内存中的数据保存在磁盘中, 重启的时候可以再次加载进行使用.redis不仅仅支持key-value数据结构, 还支持list, set, hash等数据结构.…

CHAPTER 7 HPC集群部署 - hadoop

HPC集群部署 - hadoop1. 介绍2. 优点3. 架构及相关组件3.1 HDFS3.1.1 NameNode3.1.2 DataNode3.1.3 Secondary NameNode3.1.4 Client(客户端)3.2 Mapreduce(分布式计算框架)3.3. HBase(分布式列存储数据库)3.4 Zookeeper&#xff…

【其它】玩一玩无线网桥PicoStation M2

一、无线网桥是什么? 无线网桥就是代替网线实现网络连接的装置。看下面这个场景,摄像头与录像机之间可以直接用网线连接,但遇到两者相距较远的情况,铺设网线成本太高,这时候可以用无线网桥进行连接。无线网桥一般成对…

SSM项目之租赁汽车管理

项⽬描述 汽⻋租赁管理系统,管理系统中不仅有客户的管理还有⻋辆租赁的管理,租赁⻋辆公司对于租⻋的流程,租⻋过程的问题,对于客户的维护及不同维度统计租⻋的情况做数据化管理,⽅便租⻋公司更好的维护⻋辆和⻋辆的信…

易基因: m6A RNA甲基化研究的前期探索性实验思路|干货系列

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近年来,m6A RNA甲基化作为国家自然科学基金表观遗传学研究的热门领域,相关研究成果层出不穷,高分文章不断。研究方向包括疾病发生发展、发育和分化、环…

误删磁盘恢复方法

一、工具如下:1、磁盘分区恢复工具(分区助手 9.8.0)---链接:https://pan.baidu.com/s/1t3siEwtYZl7XtcNJ8t5oLg 提取码:9tsy2、DiskGenius 磁盘信息查看工具(修复要收费):链接:https://pan.baid…

(源码篇02)webpack5中的事件调度系统和NormalModuleFactary核心逻辑

1. 书接上回,从 this.factorizeQueue.add(options, callback); 开始 不是很清楚上下文的兄弟,可以去看下我之前写的 (源码篇01)浅析webpack5中Compiler中重要的hook调用过程。 此文比较干,各位读者开始阅读前&#xf…

反射器和Spring中的IOC/DI

1.什么是反射 1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。 2)Java属于先编译…

LC-1637. 两点之间不包含任何点的最宽垂直区域(模拟)

1637. 两点之间不包含任何点的最宽垂直区域 难度中等25 给你 n 个二维平面上的点 points ,其中 points[i] [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。 垂直区域 的定义是固定宽度,而 y 轴上无限延伸的一块区域…

户外徒步用什么耳机好?户外运动耳机推荐

作为一个徒步爱好者,在长时间的户外行走的途中自然会准备一个耳机来陪伴我。市面上各种运动型耳机层出不穷,价格也从几十到上千不等。但是喜爱的运动项目不同对运动耳机的需求也不一样。今天我们就来盘带点一下市面上各产品的性能参数,哪一款…

如何理解文件描述符和文件指针,两者的区别和联系?

下面是一些预备的知识: 我们先来回顾一下这张图 如果你对此图并不了解,甚至完全都知道这张图,那么下面的内容了解起来可能并不容易。 第一,首先我们要明确的认识一点,文件流指针是各种语言对系统调用接口的封装&…

代码随想录算法训练营第四十二天 | 416. 分割等和子集

背包问题之01背包问题基础: 视频讲解 (一)常见要求: 有n件物品,每个物品只有一个,和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次&a…

【操作系统】模块六 :文件系统 (Linux文件目录 | 文件系统 | B树 B+树 |分布式文件系统)

文章目录【操作系统】模块六 :文件系统Linux的文件目录分区结构挂载目录结构/usr(Unix System Resource) 包含系统需要的资源文件,通常应用程序会把后来安装的可执行文件 也放到这个目录下,比如说文件系统底层设计 FAT…

树莓派学习笔记(十二)Linux驱动认知及编译加载驱动

文章目录一、Linux驱动认知二、内核空间1、如何找到相关的驱动2、主设备号和次设备号3、驱动链表:管理所有设备的驱动4、驱动插入链表的顺序由设备号检索5、驱动代码的开发三、驱动编写、编译、测试四、驱动阶段性总结一、Linux驱动认知 Linux驱动分为用户空间、内…

TCP网络事件模型的封装2.0

TCP网络事件模型的封装2.0 最近学习了TCP网络模型的封装,其中运用的封装技术个人感觉有点绕 在反复读代码、做思维导图下初步理解了这套封装模型,不禁感叹原来代码还能这样写?神奇! 为此将源码分享出来并将流程图画出&#xff…

FITC-PEG-SH,荧光素-聚乙二醇-巯基的用途:用于修饰氨基酸,蛋白质等

FITC-PEG-SH 荧光素聚乙二醇巯基 英文名称:Fluorescein (polyethylene glycol)Thiol 中文名称:荧光素聚乙二醇巯基 外观: 黄色液体、半固体或固体,取决于分子量。 溶剂:溶于水等其他常规性有机溶剂 激光/发射波长&#xff1a…

ChatGPT使用案例之自然语言处理

ChatGPT使用案例之自然语言处理 自然语言处理被誉为“人工智能皇冠上的明珠”,这句话就已经说明了自然语言处理在整个人工智能体系中的重要性,自然语言处理(Natural Language Processing,NLP)是一种涉及计算机和人类自…