当前位置: 首页 > news >正文

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 &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为 平衡 二叉搜索树 示例 1 输入: head [-10,-3,0,5,9] 输出:…...

Android NDK开发入门2之适应idm环境

环境搭建 Android NDK开发实战之环境搭建篇(so库,Gemini ai)-CSDN博客 初始配置 前面已经运行了一个简单的初始程序&#xff0c;现在我们来往初始程序添加类和函数&#xff0c;并成功运行的实验。 一级配置 第一层配置主要是cmake文件环境和一些编译选项。 build配置 可参…...

如何隐藏 Nginx 版本号 并自定义服务器信息,提升安全性

&#x1f3e1;作者主页&#xff1a;点击&#xff01; Nginx-从零开始的服务器之旅专栏&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01;点击&#xff01;点击&#xff01; ⏰️创作时间&#xff1a;2025年1月8日8点14分…...

鸿蒙的APP真机调试以及发布

目录&#xff1a; 1、创建好鸿蒙项目2、创建AGC项目3、实现自动签名3.1、手动方式创建签名文件和密码 4、运行项目5、无线真机调试 1、创建好鸿蒙项目 2、创建AGC项目 &#xff08;1&#xff09;在File->Project Structure->Project->Signing Configs中进行登录。(未…...

图像处理|膨胀操作

在图像处理领域&#xff0c;形态学操作是一种基于图像形状的操作&#xff0c;用于分析和处理图像中对象的几何结构。**膨胀操作&#xff08;Dilation&#xff09;**是形态学操作的一种&#xff0c;它能够扩展图像中白色区域&#xff08;前景&#xff09;或减少黑色区域&#xf…...

攻防世界 ics-07

点击之后发现有个项目管理能进&#xff0c;点进去&#xff0c;点击看到源码&#xff0c;如下三段 <?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兼职社区 有需要指导&#xff0c;请私信我留言V或者去社区找客服。...

js适配器模式

适配器模式通过把一个类的接口变换成客户端所期待的另一种接口&#xff0c;可以帮我们解决不兼容的问题。 应用 // Ajax适配器函数&#xff0c;入参与旧接口保持一致 async function AjaxAdapter(type, url, data, success, failed) {const type type.toUpperCase()let resul…...

小徐影城管理系统(源码+数据库+文档)

亲测完美运行带论文&#xff1a;文末获取源码 文章目录 项目简介&#xff08;论文摘要&#xff09;运行视频包含的文件列表&#xff08;含论文&#xff09;前端运行截图后端运行截图 项目简介&#xff08;论文摘要&#xff09; 随着现在网络的快速发展&#xff0c;网上管理系统…...

Linux第101步_了解LCD屏驱动“panel-simple.c”

了解LCD屏驱动“panel-simple.c”有助于修改屏驱动。自己另外单独写屏驱动&#xff0c;这是不现实的&#xff0c;所以学会在源程序的基础上修改&#xff0c;才是最佳的学习方法&#xff0c;这就是我们学习框架的主要原因。在Limux系统中&#xff0c;主流的显示框架有两种:DRM(D…...

【实用技能】如何使用 .NET C# 中的 Azure Key Vault 中的 PFX 证书对 PDF 文档进行签名

TX Text Control 是一款功能类似于 MS Word 的文字处理控件&#xff0c;包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理&#xff0c;网站内容发布&#xff0c;电子病历中病案模板创建、病历书写、修改历史、连续打…...

前端基础函数算法整理应用(sort+reduce+date+双重for循环)

文章目录 基础函数算法reduce 函数算法sort 函数算法时间排序1. 对日期字符串数组进行排序2. 对包含日期对象的数组进行排序3. 对包含时间戳的数组进行排序4. 对包含日期时间信息的对象数组进行排序 基础函数算法 一、排序算法 冒泡排序&#xff08;Bubble Sort&#xff09; …...

鸿蒙MPChart图表自定义(六)在图表中绘制游标

在鸿蒙开发中&#xff0c;MPChart 是一个非常强大的图表库&#xff0c;它可以帮助我们创建各种精美的图表。今天&#xff0c;我们将继续探索鸿蒙MPChart的自定义功能&#xff0c;重点介绍如何在图表中绘制游标。 OpenHarmony三方库中心仓 一、效果演示 以下是效果演示图&…...

poi-tl+kkviewfile实现生成pdf业务报告

需求背景&#xff0c;需要把ai生成的一些业务数据&#xff0c;生成一份pdf报告 需求分析 简单来说&#xff0c;就是json生成pdf的方案。 直接生成pdf。适合一些pdf样式简单的场景&#xff0c;一般就是纯文本按序渲染&#xff0c;或者是纯表格。如果需要一些复杂的排布&#x…...

【Uniapp-Vue3】scroll-view可滚动视图区域组件

如果我们有一个区域有限的大盒子&#xff08;黑&#xff09;&#xff0c;而我们要在盒子中装的东西&#xff08;灰&#xff09;过多&#xff0c;我们就会用到滚动视图&#xff1a; 表现在代码上就是下面这个样子&#xff1a; <template><view class"scrollView&…...

asp.net core webapi中的数据注解与数据验证

在这一课中&#xff0c;主要讲解了如何在 Web API 中使用数据注解&#xff08;Data Annotations&#xff09;和进行数据验证&#xff0c;以确保请求数据的有效性和完整性。 在 Web API 中&#xff0c;数据验证是确保客户端传递的数据符合业务规则和格式要求的关键步骤。数据注…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...