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

PromQL 语法

什么是 PromQL 

PromQL (Prometheus Query Language) 是 Prometheus 监控系统中用于查询时间序列数据的语言。它允许用户编写查询,以从 Prometheus 中检索并处理监控数据。

PromQL 的基础概念

1. 时间序列

Prometheus 中的时间序列由以下几个部分组成:

  • 指标名称 (Metric name):表示时间序列的类别。例如,http_requests_total 表示 HTTP 请求的总数。
  • 标签 (Labels):用于标识某个时间序列的具体特性。例如,method="GET", status="200" 可以标识不同的 HTTP 方法和状态。
  • 时间戳 (Timestamp):表示记录数据的具体时间。
  • 值 (Value):时间序列在某一时间点上的具体数值。

2. 基本查询

基本的 PromQL 查询是通过 指标名称来检索 时间序列数据。

示例:

# 这将返回 http_requests_total 指标的所有时间序列。
http_requests_total

3. 标签过滤

可以通过标签来筛选时间序列。使用 {} 来包含标签选择器:

示例:

# 该查询返回所有符合 method="GET" 且 status="200" 的时间序列。
http_requests_total{method="GET", status="200"}

可以通过 =, !=, =~, !~ 等操作符来进行更多的匹配规则:

符号含义
=精确匹配
!=不匹配
=~正则表达式匹配
!~正则表达式不匹配

4. 区间选择

PromQL 支持通过时间区间来查询过去一段时间的数据,称为 区间向量 (Range Vector)

示例:

# 该查询表示从当前时间起过去 5 分钟内的数据。
http_requests_total[5m]

PromQL 的数据类型

PromQL 中有四种数据类型:

  • 瞬时向量 (Instant Vector):一组带有当前时间戳的时间序列。
  • 区间向量 (Range Vector):一组带有时间区间的时间序列。
  • 标量 (Scalar):单个浮点数值。
  • 字符串 (String):单个字符串值(较少使用)。

1. 瞬时向量

示例:

# 返回 up 指标的所有瞬时向量
up

2. 区间向量

示例:

# 返回 up 指标在过去 5 分钟内的所有时间序列。
up[5m]

3. 标量

标量是单个数值,通常用于某些计算场景。

示例:

# 表示常量 5。
5

PromQL 的操作符

1. 算术运算符

PromQL 支持常见的算术运算符,主要用于对查询结果进行计算。

操作符含义
+
-
*
/
%取余
^幂运算

示例:

# 将请求速率结果乘以 100。
rate(http_requests_total[5m]) * 100

2. 比较运算符

用于对查询结果进行比较操作。

操作符含义
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

示例:

# 返回所有状态为 1 的实例(表示健康)
up == 1

3. 逻辑运算符

用于对不同查询结果进行逻辑运算。

操作符含义
and交集
or并集
unless差集

示例:

# 返回所有健康且请求数大于 100 的实例。
up == 1 and http_requests_total > 100

PromQL 的聚合操作符

Prometheus 提供了丰富的聚合操作符,用于将多条时间序列合并为一条。

操作符含义
sum求和
avg平均值
min最小值
max最大值
count计数
stddev标准差
stdvar方差
topk取前 k 大
bottomk取前 k 小
quantile分位数

示例:

# 计算过去 5 分钟内所有请求的总和。
sum(rate(http_requests_total[5m]))
# 按 instance 标签计算请求速率的平均值。
avg by (instance) (rate(http_requests_total[5m]))


PromQL 的内置函数

PromQL 提供了一些内置函数,帮助用户对时间序列进行更复杂的计算。

1. 时间序列计算函数

rate():计算时间序列在某段时间内的速率(适用于 Counter 类型)

rate(http_requests_total[5m])

irate():计算时间序列的瞬时速率。

irate(http_requests_total[1m])

increase():计算某个区间内指标值的增量(适用于 Counter 类型)。

increase(http_requests_total[5m])

2. 统计函数

avg_over_time():计算时间区间内的平均值。

avg_over_time(http_requests_total[10m])

sum_over_time():计算时间区间内的总和。

sum_over_time(http_requests_total[10m])

max_over_time():计算时间区间内的最大值。

max_over_time(http_requests_total[10m])

3. 特殊函数

abs():返回绝对值。

abs(node_load1)

clamp_min()clamp_max():限制最小值和最大值。

clamp_min(cpu_usage, 0.1)

4. 偏移数据

offset:来查询指定时间之前的数据。它允许你向前或向后偏移数据的时间点。

# 表示查询 1 小时前的数据。
rate(http_requests_total[5m] offset 1h)

PromQL 的子查询

子查询 (Subquery) 是一种强大的功能,允许你在指定时间范围内查询一组区间向量 (Range Vector),然后将结果用作进一步的操作。这与普通的区间向量查询不同,子查询在区间上执行某个操作,然后将结果作为新的时间序列。子查询的语法是在查询的基础上添加 []

语法:

<查询>[<区间>:<解析度>]

<查询>:你要执行的基本查询。
<区间>:子查询的时间范围,表示从当前时间点向过去的时间范围。
<解析度>(可选):用于控制子查询的采样分辨率(时间间隔),默认为 Prometheus 的全局评估间隔。

示例:

avg_over_time(rate(http_requests_total[5m])[30m:])# rate(http_requests_total[5m]):首先计算过去 5 分钟的请求速率。
# [30m:]:接下来,我们对过去 30 分钟内的请求速率进行子查询,生成一个时间区间数据。
# avg_over_time():最后,对这些请求速率计算出 30 分钟内的平均值。
# 该查询表示:对过去 1 小时内的请求速率数据进行采样,每 1 分钟取一次样本,然后计算这些样本的平均值。
avg_over_time(rate(http_requests_total[5m])[1h:1m])# rate(http_requests_total[5m]):计算 5 分钟的请求速率。
# [1h:1m]:查询过去 1 小时的数据,并每 1 分钟取一次样本。
# avg_over_time():对这些样本计算 1 小时内的平均值。
# 计算过去 1 小时内每 5 分钟请求速率的总和。
sum_over_time(rate(http_requests_total[5m])[1h:])
# 每 10 秒钟采样一次,并返回过去 1 小时内的请求速率数据。
rate(http_requests_total[5m])[1h:10s]
# 首先计算 5 分钟的请求速率,然后在过去 1 小时内查找最大请求速率。
max_over_time(rate(http_requests_total[5m])[1h:])

相关文章:

PromQL 语法

什么是 PromQL PromQL (Prometheus Query Language) 是 Prometheus 监控系统中用于查询时间序列数据的语言。它允许用户编写查询&#xff0c;以从 Prometheus 中检索并处理监控数据。 PromQL 的基础概念 1. 时间序列 Prometheus 中的时间序列由以下几个部分组成&#xff1a;…...

掌握Go语言中的时间与日期操作

Go语言中的时间与日期操作 在编写程序时&#xff0c;处理时间和日期看似是一项无关紧要的任务&#xff0c;但在需要同步多个任务或从文本文件中读取时间时&#xff0c;它的重要性便凸显出来。Go语言中的time包为我们提供了丰富的时间与日期操作功能。本文将详细介绍如何在Go语…...

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;它被设计用来提供一对多的消息分发和应用之间的通讯&#xff0c;尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构&…...

spring数据校验Validation

文章目录 需要的依赖创建校验对象Validator 需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>创建校验对象Validator 测试的实体类 //创建…...

Uniapp基于uni拦截器+Promise的请求函数封装

最近在学Uniapp&#xff0c;到封装请求的时候本来还想用axios&#xff0c;但是看到一些教学视频有更简单的方法&#xff0c; 基于uni的拦截器和Promise封装的请求函数 但是他们是用TS写的&#xff0c;还没学到TS&#xff0c;我就把JS写了&#xff0c;最终也是请求成功 // src/…...

【工具】使用 Jackson 实现优雅的 JSON 格式化输出

说明 在 Java 开发中&#xff0c;我们经常需要处理 JSON 数据。无论是从服务器端返回的数据&#xff0c;还是本地存储的数据&#xff0c;JSON 格式都因其轻量级和易于解析的特点而被广泛使用。当我们需要查看或调试 JSON 数据时&#xff0c;优雅、格式化的输出将大大提高我们的…...

ApacheKafka中的设计

文章目录 1、介绍1_Kafka&MQ场景2_Kafka 架构剖析3_分区&日志4_生产者&消费者组5_核心概念总结6_顺写&mmap7_Kafka的数据存储形式 2、Kafka的数据同步机制1_高水位&#xff08;High Watermark&#xff09;2_LEO3_高水位更新机制4_副本同步机制解析5_消息丢失问…...

.NET 自定义过滤器 - ActionFilterAttribute

这个代码片段定义了一个自定义的 ASP.NET Core 过滤器&#xff08;GuardModelStateAttribute&#xff09;&#xff0c;用于在控制器动作执行之前验证模型状态&#xff08;ModelState&#xff09;。如果模型状态无效&#xff0c;则构造一个 ProblemDetails 对象来描述错误&#…...

VMware Fusion Pro 13 for Mac虚拟机软件

Mac分享吧 文章目录 效果一、下载软件二、开始安装安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件 地址&#xff1a;www.macfxb.cn 二、开始安装 安装完成&#xff01;&#xff01;&#xff01;...

HarmonyOS应用开发环境搭建

本文主要讲述的是HarmonyOS应用开发环境的搭建&#xff0c;HUAWEI DevEco Studio是基于IntelliJ IDEA Community开源版本打造&#xff0c;为运行在HarmonyOS系统上的应用和服务提供一站式的开发平台。具体下载链接DevEco Studio 一、下载 DevEco Studio 只需要下载对应的版本&…...

YOLOv8改进实战 | 注意力篇 | 引入ICCV2023顶会LSKNet:大选择性卷积注意力模块LSKA,助力小目标检测

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8 是一种尖端的、最先进的 (SOTA) 模型,它建立在以前…...

00Mac安装playwright

文章目录 前言一、执行以下命令安装二、安装如果报错zsh: command not found: pip三、安装浏览器驱动 前言 现在常用的三个自动化测试&#xff08;或者爬虫&#xff09;库&#xff0c;是Selenium、Puppeteer、Playwright。Playwright是未来趋势&#xff0c;主要学习Playwright…...

materail3 CircularProgressIndicator和LinearProgressIndicator有难看的白块和断点

看看&#xff0c;就是这个垃圾效果&#xff1a; 圆圈的进度条有断点&#xff0c;不连接&#xff1b; 横线进度条&#xff0c;有尾部亮色&#xff0c;进度处又有分割。 它的原出处在这里&#xff1a;https://m3.material.io/components/progress-indicators/overview&#xff0…...

菜鸟入门Docker

初始Docker Docker的概念 Docker的用途 DOcke的安装 Docker架构 配置Docker镜像加速器 Docker常用命令 Docker服务相关的命令。 Docker镜像相关的命令 Docker容器相关的命令 容器的数据卷 数据卷的概念和作用 配置数据卷 Docker应用部署 Docker部署mysql Docker…...

什么是单片机?为什么要学习单片机?

实现目标 1、熟悉单片机定义、特点、应用场景、发展历史等&#xff1b; 2、理解为什么要学习单片机&#xff1f;怎样学习单片机&#xff1f; 一、单片机是什么&#xff1f; 1、定义 单片机是集成在一块&#xff08;单&#xff09;芯片上的微型计算机。平时我们把 MCU&#x…...

电子发射与气体导电

物理电磁学练习题&#xff1a;电子发射与气体导电 说明: 以下题目考察对电子发射和气体导电基本概念的理解和应用。 1. 解释以下概念&#xff1a; (a) 热电子发射 (b) 光电效应 © 逸出功 (d) 等离子体 2. 比较并对比热电子发射和光电效应的异同。 …...

【数据库】MySQL表的Updata(更新)和Delete(删除)操作

目录 1.Update 案例1&#xff1a;将孙悟空同学的数学成绩变更为 80 分 案例2&#xff1a;将曹孟德同学的数学成绩变更为 60 分&#xff0c;语文成绩变更为 70 分 案例3&#xff1a;将总成绩倒数前三的 3 位同学的数学成绩加上 30 分 案例4&#xff1a;将所有同学的语文成绩…...

Unity Adressables 使用说明(六)加载(Load) Addressable Assets

【概述】Load Addressable Assets Addressables类提供了加载 Addressable assets 的方法。你可以一次加载一个资源或批量加载资源。为了识别要加载的资源&#xff0c;你需要向加载方法传递一个键或键列表。键可以是以下对象之一&#xff1a; Address&#xff1a;包含你分配给…...

视频监控系统布局策略:EasyCVR视频汇聚平台构建高效、全面的安全防线

随着科技的飞速发展&#xff0c;视频监控系统已成为现代社会安全防范的重要组成部分&#xff0c;广泛应用于公共场所、企业园区、住宅小区等各个领域。一个科学合理的视频监控系统布局与选型策略&#xff0c;不仅能够显著提升安全监控的效率和效果&#xff0c;还能在关键时刻提…...

Spark的Web界面

http://localhost:4040/jobs/ 在顶部导航栏上&#xff0c;可以点击以下选项来查看不同类型的Spark应用信息&#xff1a; Jobs - 此视图将列出所有已提交的作业&#xff0c;并提供每个作业的详细信息&#xff0c;如作业ID、名称、开始时间、结束时间等。Stages - 此视图可以查…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...