PromQL之选择器和运算符

news2024/12/24 11:30:42
  1. 平台统一监控的介绍和调研
  2. 直观感受PromQL及其数据类型
  3. PromQL之选择器和运算符

PromQL 匹配器

  1. 相等匹配器(=)

选择与提供的字符串完全相同的数据

例:筛选出id=“G1 Eden Space” 的数据

jvm_memory_used_bytes{id="G1 Eden Space"}

在这里插入图片描述

  1. 不相等匹配器(!=)

与相等匹配器相反,用来选择与提供字符串不相同的数据

例:选择 id 不为G1 Eden Space 的数据

jvm_memory_used_bytes{id!="G1 Eden Space"}

在这里插入图片描述

  1. 正则表达式匹配器(=~)

选择与提供的正则表达式相匹配的数据

例:从id 标签中筛选出 G1开头的数据

jvm_memory_used_bytes{id =~ "G1.*"}

在这里插入图片描述

  1. 不等于的正则表达式匹配器(!~)

选择与提供的正则表达式不匹配的数据

例:从id 标签中筛选出 不以G1开头的数据

jvm_memory_used_bytes{id !~ "G1.*"}

在这里插入图片描述

jvm_memory_used_bytes 同 {name = “jvm_memory_used_bytes”},也可以用其他匹配器

PromQL 选择器

瞬时向量选择器

返回在指定时间戳查询到的最新样本值

最简单形式:返回包含该指标名称的所有时间序列的瞬时向量

例:筛选出了所有指标为jvm_memory_used_bytes的数据

jvm_memory_used_bytes

在这里插入图片描述

区间向量选择器

返回一段时间内的样本数据。通过末尾[]进行时间定义,如[1m],表示1分钟之内

例:返回一分钟内的数据

jvm_memory_used_bytes[1m]

在这里插入图片描述
图中每一条数据都4个样本值,表示1分钟之内采集了4次数据。

可使用的时间单位:秒(s)、分钟(m)、小时(h)、天(d)、周(w)、年(y)

偏移量修改器

可以让瞬时向量和区间向量的时间发生偏移

例:查询前1分钟的jvm_memory_used_bytes 样本值

jvm_memory_used_bytes offset 1m

在这里插入图片描述

注意与 jvm_memory_used_bytes[1m] 的区别

@ 修饰符

@ 修饰符能够修改瞬时向量和区间向量的求值时间,使用@时间戳 表示

例:查询 2023-01-18 19:08:59 的 jvm_memory_used_bytes 指标

jvm_memory_used_bytes @1674040139

在这里插入图片描述

例:查询2023-01-18 19:08:59 时,前 5分钟的 jvm_memory_used_bytes指标

jvm_memory_used_bytes @1674040139 offset 5m

在这里插入图片描述

PromQL 运算符

算术运算符

支持6种算术运算符,加法(+)、减法(-)、乘法(*)、除法(/)、模(%)、幂(^)

例1:计算堆内存使用率
sum(jvm_memory_used_bytes{area=“heap”}) 表示已使用的堆内存
sum(jvm_memory_max_bytes{area=“heap”}) 表示堆总内存

sum(jvm_memory_used_bytes{area="heap"})*100 / sum(jvm_memory_max_bytes{area="heap"})

在这里插入图片描述

逻辑运算符

and(并且)、or(或者)、unless(排除)

  • vector1 and vector2 :产生一个新的向量,向量中的元素由vector1完全匹配 vector2的元素组成
  • vector1 or vector2:产生一个新的向量,由vector1中的元素 和 vector2中不与vector1匹配的元素 组成
  • vector1 unless vector2:产生一个新的向量,由vector1 中没有与vector2匹配的元素组成

还是用jvm_memory_used_bytes 指标来举例。

and 示例:

vector1:所有实例的堆内存数据

jvm_memory_used_bytes{area="heap"}

在这里插入图片描述

vector2:筛选出 instance=“192.168.0.113:9000”,area=“heap” 数据

jvm_memory_max_bytes{instance="192.168.0.113:9000",area="heap"}

在这里插入图片描述

and 运算符后,只保留了instance=“192.168.0.113:9000”,area=“heap” 标签相同的数据

jvm_memory_used_bytes{area="heap"} and jvm_memory_max_bytes{instance="192.168.0.113:9000",area="heap"}

在这里插入图片描述

发现 and 运算符并不管 指标名是否一样

or 示例:

为了更加直观,使用另外一个指标http_server_requests_seconds_count

在这里插入图片描述
unless 示例:

在这里插入图片描述

比较运算符

== 相等、!=不相等、>大于、<小于、>=大于等于、<=小于等于

例:在运算符之后加上bool关键字可以让结果返回0或1

99 >= bool 88

向量匹配

Prometheus 的向量与向量 之间进行运算操作时会基于默认的匹配规则:依次找到与左边向量元素匹配(标签完全一致)的右边向量元素进行运算,如果没有找到匹配元素,直接丢弃。向量匹配主要有:一对一,一对多,多对一。

一对一匹配:

即两遍拥有的标签完全相同,找到唯一一条条目依次进行匹配。

process_open_fds / process_max_fds

如果两边拥有的标签不一致可以用 on 或 ignoring 关键字修改标签间的匹配行为。

on:指定要匹配的标签,只匹配指定的标签。

ignoring:忽略某些标签,就是指定的这些标签不匹配,其他的都匹配。

如下示例中只对 instance 和 job 两个标签进行匹配。

sum by(instance, job) (rate(node_cpu_seconds_total{mode="idle"}[5m])) 
/ on (instance, job) 
sum by(instance, job) (rate(node_cpu_seconds_total [5m] ))

两个瞬时向量进行比较时都会返回左边的表达式:

如下示例都会返回左边的表达式:可以根据需求来写表达式。

process_open_fds < process_max_fds
process_max_fds >  process_open_fds

一对多或多对一匹配:
group_left: 左边有更多的子集
group_right:右边有更多的子集

用法:

<vector expr> <bin-op> ignoring(<label list>) group_left(<label list>) <vector expr>
<vector expr> <bin-op> ignoring(<label list>) group_right(<label list>) <vector expr>
<vector expr> <bin-op> on(<label list>) group_left(<label list>) <vector expr>
<vector expr> <bin-op> on(<label list>) group_right(<label list>) <vector expr>

分组只能用于 比较和算术运算符中

作者其他文章:
Grafana 系列文章,版本:OOS v9.3.1

  1. Grafana 的介绍和安装
  2. Grafana监控大屏配置参数介绍(一)
  3. Grafana监控大屏配置参数介绍(二)
  4. Grafana监控大屏可视化图表
  5. Grafana 查询数据和转换数据
  6. Grafana 告警模块介绍
  7. Grafana 告警接入飞书通知

Spring Boot Admin 系列

  1. Spring Boot Admin 参考指南
  2. SpringBoot Admin服务离线、不显示健康信息的问题
  3. Spring Boot Admin2 @EnableAdminServer的加载
  4. Spring Boot Admin2 AdminServerAutoConfiguration详解
  5. Spring Boot Admin2 实例状态监控详解
  6. Spring Boot Admin2 自定义JVM监控通知
  7. Spring Boot Admin2 自定义异常监控
  8. Spring Boot Admin 监控指标接入Grafana可视化

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch高级查询—— 匹配查询文档

目录一、初始化文档数据二、匹配查询文档示例2.1、概述2.2、示例一、初始化文档数据 在 Postman 中&#xff0c;向 ES 服务器发 POST 请求 &#xff1a;http://localhost:9200/user/_doc/1&#xff0c;请求体内容为&#xff1a; {"name":"张三","age&…

知识图谱与神经网络,神经调节知识网络图

1、图立方和知识图谱的区别和联系与区别 图网络&#xff0c;即Natural Graph&#xff0c;是基于世界各实体之间的自然关系表示而得到的图&#xff0c;他们的节点一般是某个特定网络中的实体&#xff08;人、物理机、分子&#xff09;。例如&#xff1a;社交网络、通信网络、蛋…

阿里云-ODPS SQL-日常开发日期、字符、数学运算、聚合函数函数使用技巧

文章目录1、背景2、 数据处理2.1、OLTP与OLAP概念2.2、OLTP与OLAP区别3、日常开发常用函数3.1、日期函数3.2、数学运算函数3.3、字符串处理函数3.4、聚合函数1、背景 数据仓库&#xff0c;是一个面向主题的、集成的、随时间变化的、信息本身相对稳定的数据集合。 数据仓库从Or…

2-Node.js 内置模块

Node.js 内置模块 简介 之前说过&#xff0c;Node.js 中重要的两句话是 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型&#xff0c;使其轻量又高效。 上面两句话&#xff0c;可以使用下面的图片来具体认识。…

【机器学习 - 5】:多元线性回归

文章目录多元线性回归多元线性回归公式推导举例&#xff1a;波士顿房价取特征值RM为例取所有特证为例多元线性回归 多元线性回归方程&#xff1a;特征值为两个或两个以上。 以下是多元线性回归的模型&#xff0c;我们需要求出theta&#xff0c;使得真实值和预测值的差值最小。 …

2023寒假算法集训营1

A. World Final? World Cup! (I) &#xff08;模拟、枚举&#xff09; 题意&#xff1a; 给定一个长度为 10 的01串&#xff0c;表示 A、B 双方的点球情况&#xff0c;1 表示罚进&#xff0c;0 表示罚不进。 A 先手&#xff0c;交替罚点球&#xff0c;各罚五次。 得分多者…

C语言字符串操作函数(库函数)及其实现

库函数 函数介绍及模拟实现 1.1strlen 1.2strcpy 1.3strcat 1.4strcmp 1.5strncpy 1.6strncat 1.7strncmp 1.8strstr 1.9strtok 1.10strerror 1.11memcpy 1.12memmove 1.13memcmp 小结 本章重点&#xff1a; 重点介绍处理字符串和字符串的库函数的使用和注意事项…

剑指offer

剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数字…

格式化输入

1、golang不同输入语句的区别&#xff1a; 特点ScanScanlnScanf从控制台读取内容SscanSscanlnSscanf从指定字符串中读取内容FscanFscanlnFscanf从文本中读取内容特点在读取内容的时候不会关注换行在读取内容的时候, 遇到换行时结束以格式化的方式读取内容&#xff0c;遇到换行…

C++程序用codeblocks集成开发环境生成的exe文件无法运行情况的解决

C程序用codeblocks集成开发环境生成的exe文件无法运行情况的解决 一般是因为你使用是自带mimgw的Code::Blocks版本&#xff0c;对#include<iostream>支持不完善造成的。 测试代码如下&#xff1a; #include <iostream> using namespace std;int main() {cout <…

测试开发 | 通用 api 封装实战,带你深入理解 PO

image1080434 66.5 KB 在普通的接口自动化测试中&#xff0c;如果接口的参数&#xff0c;比如 url&#xff0c;headers等传参改变&#xff0c;或者测试用例的逻辑、断言改变&#xff0c;那么整个测试代码都需要改变。apiobject设计模式借鉴了pageobject的设计模式&#xff0c;可…

3. PyCharm、PyQt5、PyQt5-tools的下载安装、基于PyCharm开发PyQt5

1、 PyCharm的下载安装 为什么选择PyCharm&#xff1f;而不用QtCreator&#xff0c;很明显&#xff0c;QtCreator基于C/QT开发时确实很不错&#xff0c;但是基于Python/QT开发时就显得比较鸡肋了&#xff0c;代码的智能提示&#xff0c;高亮等都没有。。而PyCharm就比较牛逼了…

【GD32F427开发板试用】位带操作实现多线程下的跑马灯

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;SmallWhite 一、位带操作 作用&#xff1a;对某一位或者几个连续的位进行操作 前言 我们在使用GD32等单片机时使用到的固件库编程&#xff…

int 和 Integer 有什么区别?为什么要有包装类?

基本数据类型 在 Java 中&#xff0c;一共有 8 种基本类型&#xff08;primitive type&#xff09;&#xff0c;其中有 4 种整型、2 种浮点类型、1 种用于表示 Unicode 编码的字符类型 char 和 1 种用于表示真假值的 boolean 类型。 4 种整型&#xff1a;int、short、long、by…

Godot实现蝴蝶飞舞Shader

前言 我一直在探索在游戏UI中实现特效的方法&#xff0c;如LOL&#xff0c;王者荣耀那种华丽的UI特效。 经过总结有一些方法 1、AE做特效渲染成序列帧供游戏引擎播放 优点&#xff1a;节省资源&#xff0c;适合定制特殊需求 缺点&#xff1a;太大占地方&#xff0c;不好修改…

【H5小游戏】-使用js复刻经典小游戏【接鸡蛋】,快来帮助鸡妈妈找回蛋宝宝吧

接鸡蛋游戏需求&#x1f447;核心玩法&#x1f447;&#x1f447;界面原型&#x1f447;&#x1f447;成品演示&#x1f447;1.游戏演示2.暂停演示游戏开发1.游戏素材准备2.代码实现1.创建index.html页面复刻经典小游戏【接鸡蛋】&#xff0c;快来帮助鸡妈妈找回它的蛋宝宝吧 …

用友BIP与旺店通·企业奇门对接集成采购订单列表查询=>创建采购单(采购订单=>采购单)

用友BIP与旺店通企业奇门对接集成采购订单列表查询>创建采购单(采购订单>采购单-p)来源系统:用友BIP用友BIP助力行业龙头企业、产业链核心企业以及平台型企业建设产业互联网运营平台&#xff0c;通过运营、管理、协同配置和共享资源&#xff0c;实现产业链上下游连接与协…

基于 CartPole-v0 环境的强化学习算法实现(附完整代码)

1.1 CartPole-v0Cart Pole 在 OpenAI 的 gym 模拟器里面是相对比较简单的一个游戏。游戏里面有一个小车&#xff0c;上有 一根杆子。小车需要左右移动来保持杆子竖直。如果杆子倾斜的角度大于 15&#xff0c;那么游戏结束。小车也不 能移动出一个范围&#xff08;中间到两边各 …

03 利用栈进行中缀表达式计算

运算符优先级 ​​​​ 栈内运算符加减乘除取模优先级比栈外优先级大1&#xff0c;例如当23-5时我们往往从左到右计算&#xff0c;即先算再算-&#xff0c;使用中缀表达式两个栈计算就是栈外-优先级低于栈顶&#xff0c;故会弹出运算符和两个操作数进行计算。 中缀表达式计算…

Redis应用技术(3)List和Set在Feed流中的选择

在数据推送的时候,我们使用Feed流 Feed流有三种推送数据的方式(以微博订阅为例) 1.推模式(Push) 将数据在发出后直接推到每个收件箱中.这样会造成发送方的内存占用很大 2.拉模式 用户每次登录后主动的将数据从收件箱中拉去到,会造成用户的负载增加(如果关注的人很多,甚至会导…