PromQL基础使用和案例解析
文章目录
- PromQL简介
- 数据类型
- 1、瞬时数据 (Instant vector)
- 2、区间数据 (Range vector)
- ➢ Time Durations
- ➢ Offest modifier
- ➢ @modifier
- 3、标量数据 (Scalar)
- 4、字符串 (String)
- 条件匹配
- 1、完全匹配
- 2、正则匹配
- 运算符
- 1、比较运算符
- 2、算数运算符
- 3、逻辑运算符
- 4、聚合运算符
- ➢ 求和 (sum)
- ➢ 计数 (count)
- ➢ 最大值 (max)
- ➢ 最小值 (min)
- ➢ 求平均值 (avg)
- ➢ 取前x个值 (topk)
- ➢ 取后x个值 (bottomk)
- 5、匹配运算
- ➢ 关联标签 (on)
- ➢ 忽略标签 (ignoring)
- ➢ 以某个标签进行计算 (by)
- ➢ 舍弃某个标签后进行计算 (without)
PromQL简介
PromQL是prometheus自己开发的数据查询DSL语言,语言表现力非常丰富,支持条件查询、操作符、并且内建了大量内置函数,供我们针对监控数据的各种维度进行查询。
数据类型
PromQL 表达式计算出来的值有以下几种类型:
- 瞬时向量 (Instant vector):一组时序,每个时序只有一个采样值
- 区间向量 (Range vector):一组时序,每个时序包含一段时间内的多个采样值
- 标量数据 (Scalar):一个浮点数
- 字符串 (String):一个字符串
1、瞬时数据 (Instant vector)
定义:瞬时数据表示的是当前时刻的数据
示例:查询CPU的使用时间 (node_cpu_seconds_total)

2、区间数据 (Range vector)
定义:区间数据表示的是在某一个时间范围内的数据,可以分为以下几种:
➢ Time Durations
表示持续时间,计量单位包含毫秒(ms)、秒(s)、分钟(m)、小时(h)、天(d)、周(w)、年(y)等。
示例:查询CPU1分钟内的使用时间 (node_cpu_seconds_total[1m])

可以看到1分钟内,每个指标有4个值,采样周期是15s。
➢ Offest modifier
Offset modifier 表示偏移量修饰符,允许更改查询中单个瞬间和范围向量的时间偏移量。
示例:查询CPU使用时间在5分钟以前的数据 (node_cpu_seconds_total offset 5m)

➢ @modifier
@修饰符 后面加上一个Unix时间戳,可以查询改时间点的数据。
注意:这种用法需要在prometheus启动时添加参数 --enable-feature=promql-at-modifier ,并且以前老版本的prometheus可能不支持这种用法。
示例:查询2022.01.25 00:00:00这个时刻CPU的使用时间 (node_cpu_seconds_total@1643040000)

3、标量数据 (Scalar)
定义:标量数据没有时间属性,每个时间点数值一致。
示例:查询CPU使用时间,所有标签的个数 (count(node_cpu_seconds_total) )

4、字符串 (String)
定义:字符串在PromQL中用于表示文本数据。
示例:可以用单引号(‘’)、双引号(“”)或反引号(``)来指定。在PromQL中,字符串通常用于标签匹配或作为函数参数。
条件匹配
promQL支持各种条件匹配,条件匹配符有:= 、!= 、=~ 、!~
- =:选择与提供的字符完全相同的数据
- !=:选择不等于提供的字符串的数据
- =~:选择与提供的字符串进行正则表达式匹配的数据
- !~:选择与提供的字符串不匹配的数据
1、完全匹配
示例1:查询CPU第一个核的使用时间 (node_cpu_seconds_total{cpu=“0”})

示例2:查询CPU除第一个外其他核的使用时间 (node_cpu_seconds_total{cpu!=“0”} )

示例3:查询CPU第一个、第二个核的使用时间 (node_cpu_seconds_total{cpu=~“0|1”})

示例4:查询CPU除第一个、第二个外其他核的使用时间 (node_cpu_seconds_total{cpu!~“0|1”})

2、正则匹配
示例:查询CPU第一个核,且mode是i开头的使用时间 (node_cpu-seconds_total{cpu=“0”,mode=~“i.*”})

运算符
PromQL支持各种运算符,并对结果数据进行运算和过滤。
1、比较运算符
比较运算符有:== 、!= 、> 、< 、>= 、<=
比较运算符与数学中和其他语言的含义是一样的
示例:查询CPU使用时间等于0的标签 (node_cpu_seconds_total == 0)

示例:查询CPU使用时间不等于0的标签 (node_cpu_seconds_total != 0)

其他比较运算符的用法与上面类似,就不举例了。
2、算数运算符
算术运算符有:加+ 、减- 、乘* 、除/ 、取余% 、幂次方^等
示例:计算主机CPU使用时间和主机上面虚拟机使用时间的和 (node_cpu_seconds_total + node_cpu_guest_seconds_total)

其他算数运算符的用法与上面类似,就不举例了。
3、逻辑运算符
逻辑运算符有:和(and)、或(or)、非(unless)
示例:查询CPU的时间大于0且小于10的标签 (node_cpu_seconds_total > 0 and node_cpu_seconds_total < 10)

其他逻辑运算符的用法与上面类似,就不举例了。
4、聚合运算符
➢ 求和 (sum)
示例:计算CPU所有核的总使用时间 (sum(node_cpu_seconds_total))

➢ 计数 (count)
示例:计算CPU的核数 (count(node_cpu_seconds_total{mode=“system”}))

➢ 最大值 (max)
示例:查询CPU第一个核中使用时间最大值 (max(node_cpu_seconds_total{cpu=“0”}))

➢ 最小值 (min)
示例:查询CPU第一个核中使用时间最小值 (min(node_cpu_seconds_total{cpu=“0”}) )

➢ 求平均值 (avg)
示例:查询CPU所有核的平均使用时间 (avg(node_cpu_seconds_total))

➢ 取前x个值 (topk)
示例:查询CPU所有核中排名前两个的核 (topk(2,node_cpu_seconds_total))

➢ 取后x个值 (bottomk)
示例:查询CPU所有核中排名后两个的核 (bottomk(2,node_cpu_seconds_total))

5、匹配运算
➢ 关联标签 (on)
定义:将两个指标进行算数运算时,如果两个指标的标签不完全相同,可以匹配相同的标签进行计算。
示例:计算CPU每个核系统态和用户态的总使用时间 (node_cpu_seconds_total{mode=“system”} + on(instance,cpu) node_cpu_seconds_total{mode=“user”})
➢ 忽略标签 (ignoring)
定义:将两个指标进行算数运算时,如果两个指标的标签不完全相同,可以忽略不一样的标签进行计算忽略运行状态。
示例:计算CPU每个核系统态和用户态的总使用时间 (node_cpu_seconds_total{mode=“system”} + ignoring(mode) node_cpu_seconds_total{mode=“user”})

➢ 以某个标签进行计算 (by)
示例:计算每个CPU核的各个状态的总使用时间 (sum(node_cpu_seconds_total) by (cpu)))

➢ 舍弃某个标签后进行计算 (without)
示例:计算每个CPU核的各个状态的总使用时间 (sum(node_cpu_seconds_total) without (cpu))

相关文章:
PromQL基础使用和案例解析
文章目录 PromQL简介数据类型1、瞬时数据 (Instant vector)2、区间数据 (Range vector)➢ Time Durations➢ Offest modifier➢ modifier 3、标量数据 (Scalar)4、字符串 (String) 条件匹配1、完全匹配2、正则匹配 运算符1、比较运算符2、算数运算符3、逻辑运算符4、聚合运算符…...
使用Python实现基于机器学习的垃圾邮件过滤
友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将深…...
MySql根据经纬度查询距离
一、搭建测试 创建数据表() CREATE TABLE sys_test (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键ID,name varchar(20) DEFAULT NULL COMMENT 名称,longitude decimal(10,6) DEFAULT NULL COMMENT 经度,latitude decimal(10,6) DEFAULT NULL COMMENT 维度,PRIMARY KEY (id…...
Aviatrix Controller 未授权命令注入漏洞复现(CVE-2024-50603)
0x01 产品简介 Aviatrix Controller是一款强大的云网络管理平台,提供简化的跨云网络管理、自动化配置、安全策略、流量监控等功能,帮助企业实现更加灵活、安全和高效的云网络架构,特别适用于多云和混合云环境。主要用于编排和管理各种网络和连接解决方案。它为用户提供了一…...
数据结构与算法之二叉树: LeetCode 109. 有序链表转换二叉搜索树 (Ts版)
有序链表转换二叉搜索树 https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/description/ 描述 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为 平衡 二叉搜索树 示例 1 输入: head [-10,-3,0,5,9] 输出:…...
Android NDK开发入门2之适应idm环境
环境搭建 Android NDK开发实战之环境搭建篇(so库,Gemini ai)-CSDN博客 初始配置 前面已经运行了一个简单的初始程序,现在我们来往初始程序添加类和函数,并成功运行的实验。 一级配置 第一层配置主要是cmake文件环境和一些编译选项。 build配置 可参…...
如何隐藏 Nginx 版本号 并自定义服务器信息,提升安全性
🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击!点击!点击! ⏰️创作时间:2025年1月8日8点14分…...
鸿蒙的APP真机调试以及发布
目录: 1、创建好鸿蒙项目2、创建AGC项目3、实现自动签名3.1、手动方式创建签名文件和密码 4、运行项目5、无线真机调试 1、创建好鸿蒙项目 2、创建AGC项目 (1)在File->Project Structure->Project->Signing Configs中进行登录。(未…...
图像处理|膨胀操作
在图像处理领域,形态学操作是一种基于图像形状的操作,用于分析和处理图像中对象的几何结构。**膨胀操作(Dilation)**是形态学操作的一种,它能够扩展图像中白色区域(前景)或减少黑色区域…...
攻防世界 ics-07
点击之后发现有个项目管理能进,点进去,点击看到源码,如下三段 <?php session_start(); if (!isset($_GET[page])) { show_source(__FILE__); die(); } if (isset($_GET[page]) && $_GET[page] ! index.php) { include(flag.php);…...
C# 之某度协议登录,JS逆向,手机号绑定,获取CK
.NET兼职社区 .NET兼职社区 .NET兼职社区 .NET兼职社区 有需要指导,请私信我留言V或者去社区找客服。...
js适配器模式
适配器模式通过把一个类的接口变换成客户端所期待的另一种接口,可以帮我们解决不兼容的问题。 应用 // Ajax适配器函数,入参与旧接口保持一致 async function AjaxAdapter(type, url, data, success, failed) {const type type.toUpperCase()let resul…...
小徐影城管理系统(源码+数据库+文档)
亲测完美运行带论文:文末获取源码 文章目录 项目简介(论文摘要)运行视频包含的文件列表(含论文)前端运行截图后端运行截图 项目简介(论文摘要) 随着现在网络的快速发展,网上管理系统…...
Linux第101步_了解LCD屏驱动“panel-simple.c”
了解LCD屏驱动“panel-simple.c”有助于修改屏驱动。自己另外单独写屏驱动,这是不现实的,所以学会在源程序的基础上修改,才是最佳的学习方法,这就是我们学习框架的主要原因。在Limux系统中,主流的显示框架有两种:DRM(D…...
【实用技能】如何使用 .NET C# 中的 Azure Key Vault 中的 PFX 证书对 PDF 文档进行签名
TX Text Control 是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打…...
前端基础函数算法整理应用(sort+reduce+date+双重for循环)
文章目录 基础函数算法reduce 函数算法sort 函数算法时间排序1. 对日期字符串数组进行排序2. 对包含日期对象的数组进行排序3. 对包含时间戳的数组进行排序4. 对包含日期时间信息的对象数组进行排序 基础函数算法 一、排序算法 冒泡排序(Bubble Sort) …...
鸿蒙MPChart图表自定义(六)在图表中绘制游标
在鸿蒙开发中,MPChart 是一个非常强大的图表库,它可以帮助我们创建各种精美的图表。今天,我们将继续探索鸿蒙MPChart的自定义功能,重点介绍如何在图表中绘制游标。 OpenHarmony三方库中心仓 一、效果演示 以下是效果演示图&…...
poi-tl+kkviewfile实现生成pdf业务报告
需求背景,需要把ai生成的一些业务数据,生成一份pdf报告 需求分析 简单来说,就是json生成pdf的方案。 直接生成pdf。适合一些pdf样式简单的场景,一般就是纯文本按序渲染,或者是纯表格。如果需要一些复杂的排布&#x…...
【Uniapp-Vue3】scroll-view可滚动视图区域组件
如果我们有一个区域有限的大盒子(黑),而我们要在盒子中装的东西(灰)过多,我们就会用到滚动视图: 表现在代码上就是下面这个样子: <template><view class"scrollView&…...
asp.net core webapi中的数据注解与数据验证
在这一课中,主要讲解了如何在 Web API 中使用数据注解(Data Annotations)和进行数据验证,以确保请求数据的有效性和完整性。 在 Web API 中,数据验证是确保客户端传递的数据符合业务规则和格式要求的关键步骤。数据注…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
