当前位置: 首页 > 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;数据验证是确保客户端传递的数据符合业务规则和格式要求的关键步骤。数据注…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...