Prometheus的PromQL语法讲解和使用示例

news2024/11/30 6:42:46

目录

  • 1. PromQL介绍
  • 2. 基本用法
    • 2.1 查询时间序列
    • 2.2 范围查询
    • 2.3 时间位移操作
    • 2.4 聚合操作
    • 2.5 标量和字符串
  • 3. 表达式的合法格式
  • 4. PromQL操作符
    • 4.1 数学运算
    • 4.2 布尔运算
    • 4.3 集合运算符
    • 4.4 操作符优先级
    • 4.5 聚合操作

1. PromQL介绍

PromQL提供对时间序列数据进行逻辑运算、过滤、聚合的支持。应用于数据查询、可视化、告警处理

2. 基本用法

2.1 查询时间序列

点击Prometheus图标,进行查询页面。可以点击地图图标查看有哪些metrics name。输入要查询的metrics name和过滤条件,然后点击执行就会返回该时间序列中的一个瞬时(最新)监控数据

其中过滤条件支持完全匹配和正则匹配

  • 完全匹配支持:=!=
  • 正则匹配支持:=~!~,多个表达式之间使用|进行分隔
    查询时间序列

2.2 范围查询

查询过去一段时间范围内的监控数据时,需要使用区间向量表达式。如查询最近5分钟内的所有监控数据,一个label会有该时间范围内的一系列监控数据

范围查询时间范围还支持s(秒)、m(分钟)、h(小时)、d(天)、w(周)、y(年)

2.3 时间位移操作

在瞬时向量表达式或区间向量表达式中,都是以当前时间为基准。如果我们想查询,5 分钟前的瞬时监控数据,可以使用时间位移操作offset

时间位移操作

2.4 聚合操作

可以对多个label的监控数据进行聚合,形成一条新的时间序列监控数据。如下公式:先取每个label最近5分钟的一系列时间序列。在每个label下,取最近的两个点计算速率。最后按code进行分组,对速率进行求和

聚合操作

2.5 标量和字符串

标量:一个浮点型的数字值,没有时序。可以通过scalar()函数将单个瞬时向量转换为标量,比如scalar(sum(prometheus_http_requests_total{}))

scalar
字符串

格式还有:"this is a string"'this is a string'

字符串

3. 表达式的合法格式

所有的PromQL表达式都必须至少包含一个指标名称(例如prometheus_http_requests_total),或一个不会匹配到空字符串的标签过滤器(例如{code=”200”})。如{job=~".*"}不合法,因为会匹配到空字符串

标签过滤器还可以使用内置的__name__标签来指定监控指标名称

__name__

4. PromQL操作符

4.1 数学运算

支持的所有数学运算符:+(加法)、-(减法) 、*(乘法)、/(除法)、%(求余)、^(幂运算)

数学运算

4.2 布尔运算

支持以下布尔运算符如下:==(相等)、!=(不相等)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)

布尔运算默认的作用是对结果进行过滤。使用bool修饰符,可以不进行过滤,而是返回1(true)或0(false)。如下所示

bool修饰符

4.3 集合运算符

通过集合运算,可以在两个瞬时向量之间进行相应的集合操作。支持以下集合运算符:

  • and:集合1和集合2都有的label
  • or:集合1和集合2的所有label(重叠的label只取一份)
  • unless:集合1有,但集合2没有的label
    集合运算符

4.4 操作符优先级

操作符中优先级由高到低依次为:

  • ^
  • *, /, %
  • +, -
  • ==, !=, <=, =, >
  • and, unless
  • or

4.5 聚合操作

可以将瞬时表达式返回的样本数据进行聚合,形成一个新的时间序列。支持的聚合操作符如下:

  • sum(求和)
  • min(最小值)
  • max(最大值)
  • avg(平均值)
  • stddev(标准差)
  • stdvar(标准差异)
  • count(计数)
  • count_values(对value进行计数)
  • bottomk(倒序排序后,后n条时序)
  • topk(倒序排序后,取前n条时序)
  • quantile(φ, express):其中0 ≤ φ ≤ 1。计算当前所有标签的数据值,在指定百分位的一个数据值。例如当φ为0.5时,表示计算当前所有标签的中位数

使用聚合操作的语法如下:

<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]
  • 只有count_values、quantile、topk、bottomk支持参数(parameter)
  • without用于从计算结果中移除列出的标签,而保留其它标签。by的计算结果
    中只保留列出的标签,其余标签则移除
  • label list使用逗号进行分隔

count_values的使用示例如下:

count_valuesquantile的使用示例如下:
quantile

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

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

相关文章

SpringBoot 配置文件

哈喽呀&#xff0c;你好呀&#xff0c;欢迎呀&#xff0c;快来看一下这篇宝藏博客吧~~~ 1. 配置文件的作用 对于Spring Boot项目而言,所有重要的数据都是在配置文件中配置的,比如: 项目的启动端口;数据库的连接信息(包含用户名和密码的设置);用于发现和定位问题的普通日志和异…

第09讲:路由开发

一、使用脚手架创建vue路由项目 项目的创建步骤参考&#xff1a; 在预设中选择Router 这里输入n&#xff0c;表示不使用history模式 选择In dedicated config files表示将配置分开存放 项目已经创建完成&#xff0c;使用VSCode打开&#xff08;部分win10 以上机型请用管理员…

[GO] 图书管理系统API

图书管理系统 1. 创建项目 2. 配置goproxy GOPROXYhttps://goproxy.cn 3. 添加格式化工具 4. 定义目录结构 |---- Readme.md //项目说明 |---- config // 配置文件(mysql配置,ip,端口,用户名,密码等) |---- controller // CLD服务入口,负责处理路由,参数校验,请求转发 |----…

缓存实现方式

为啥需要缓存&#xff1f; mysql关系型数据库&#xff0c;查询时需要磁盘IO&#xff0c;会消耗系统性能并且耗时&#xff0c;当数据变化量较小&#xff0c;并且响应要快的话&#xff0c;可以考虑使用缓存 服务端缓存方式有哪些&#xff1f; 服务端缓存方式&#xff1a; ①可以使…

git push/pull 超时问题解决

使用代理&#xff0c;发现git仓库浏览器可以访问到&#xff0c;但是本地 push/pull 时提示超时&#xff0c;这里提供一个方案供参考&#xff08;亲测有效&#xff09;&#xff1a; 修改系统的DNS为&#xff1a;114.114.114.114

基于java SSM框架的校园二手交易平台设计

一、项目介绍 游客&#xff1a;浏览商品&#xff0c;登录、注册 用户&#xff1a;浏览商品&#xff0c;发布&#xff0c;评论商品&#xff0c;我的订单&#xff0c;收藏&#xff0c;修改个人信息&#xff0c;搜索&#xff0c;回复评论 管理员&#xff1a;商品分类管理&#xff…

基于MATLAB开发AUTOSAR软件应用层模块-part13.AUTOSAR Dictionary-3 编辑AUTOSAR元素-SWC 和PORTS

配置SWC 此处可以配置SWC的名字和类型,类型包含: Application 应用组件 ComplexDiviceDriver 复杂驱动组件 EcuAbstraction ECU 抽象组件 SensorActuator 传感器执行器组件

学会python可以做哪些兼职?

前言 以我差不多四年的 Python 使用经验来看&#xff0c;大概可以按以下这些路子来赚到钱&#xff0c;但编程技能其实只是当中必不可少的一部分&#xff0c;搭配其它技能栈食用风味更佳。 1、爬虫 很多人入门 Python 的必修课之一一定是 Web 开发和爬虫&#xff0c;但这两项…

如何使用Github+picGo搭建图床???

最开始我使用iPic微博图床匿名上传&#xff0c;但是&#xff01;&#xff01;&#xff01;当我不小心上传了隐私文件后&#xff0c;删除特别麻烦(联系新浪客服,提供图片是自己上传的证据才给予处理)&#xff0c;因为白嫖图床&#xff0c;总担心挂掉&#xff0c;而且不利于备份。…

独立性能环境的重要性

独立性能环境的重要性 有些同学担心&#xff0c;由于性能测试环境和线上环境配置不一致&#xff0c;会导致线下环境得到的性能结果无法发现足够多的性能问题&#xff0c;无法对线上环境的容量评估/稳定性保障带来足够的参考。其中担心的重点有如下几点&#xff1a; 配置不一致&…

47 岁从华为退休,操作系统老兵转战 OpenHarmony 生态 | 近匠

【CSDN 编者按】开源生态建设作为开源发展的关键&#xff0c;在国内仍缺乏足够的多的成功先例&#xff0c;开源操作系统生态到底该如何建设&#xff1f;本期《近匠》邀请到专注于 OpenHarmony 操作系统生态共建的杨启彬与我们分享他的实践经验。 本期受访嘉宾&#xff1a; 杨启…

软件测试工程师面试如何描述自动化测试是怎么实现的?

软件测试工程师面试的时候&#xff0c;但凡简历中有透露一点点自己会自动化测试的技能点的描述&#xff0c;都会被面试官问&#xff0c;那你结合你的测试项目说说自动化测试是怎么实现的&#xff1f;一到这里&#xff0c;很多网友&#xff0c;包括我的学生&#xff0c;也都一脸…

【车载开发系列】UDS诊断---OBD基础概述

【车载开发系列】UDS诊断—OBD基础概述 UDS诊断---OBD基础概述【车载开发系列】UDS诊断---OBD基础概述一.什么是OBD二.OBD和UDS的区别三.OBD应用功能与应用领域四.OBD的特点有哪些五.OBD的服务概述六.OBD服务中的DTC七.OBD服务中0x03和0x07的区别八.Pending DTC有什么用九.OBD的…

昇腾携手OpenMMLab,支持海量算法仓库的昇腾AI推理部署

摘要&#xff1a;近日&#xff0c;昇腾AI联合浦江实验室&#xff0c;正式实现OpenMMLab算法仓库在昇腾的异构计算架构CANN上的推理部署&#xff0c;目前相关代码已推入MMDeploy 0.10.0版本&#xff0c;并在GitHub正式发布。本文分享自华为云社区《昇腾携手OpenMMLab&#xff0c…

标准库 - Object

一、Object 对象&#xff0c;同时也是一个构造函数。 Object 对象提供了很多操作对象的属性和方法&#xff0c;也是对应的原型。 1.Objcet() 作为函数使用 可以把其他数据类型转为一个包装对象 <script> var a Object("a");// 传入字符串就可以包装为字符串…

面试必备:分库分表经典15连问

前言 大家好&#xff0c;我是田螺。我们去面试的时候&#xff0c;几乎都会被问到分库分表。田螺哥整理了分库分表的15道经典分库分表面试题&#xff0c;大家看完肯定会有帮助的。 公众号&#xff1a;捡田螺的小男孩github地址&#xff0c;感谢每颗star&#xff1a;github 1. 我…

Jmeter随机参数各种搭配

目录&#xff1a;导读 前言 一、两个固定值之间随机生成一个值&#xff0c;应用场景没有限制 二、接下来使用CSV文件按提前写好的值作为参数&#xff0c;执行场景需要提前根据实际情况配置好执行次数 三、在固定的多个值中&#xff0c;随机选取一个值作为参数&#xff0c;执…

Smconf(分布式配置管理框架)概述

Smconf 专注于分布式环境下的配置的统一管理。采用 JavaZookeeperMongodbSpring Boot 开发。目前只支持 Java&#xff0c;其他的使用语言需要通过调用 REST API 来实现。 每个技术人都有一个开源的梦想&#xff0c;那就是自己也能开发出一个让很多人使用的框架。其实分享使用不…

8个巧用iOS备忘录的方法,别浪费了几千块的iPhone手机

你用过ios系统的备忘录吗&#xff1f;是不是只用来记录生活的一些事项呢&#xff1f;如果是这样那就太浪费啦&#xff01;这里分享8个小技巧&#xff0c;快学一学让你的备忘录能物尽其用吧&#xff01;1.笔记-横线与网格大家是不是觉得备忘录的背景光秃秃的&#xff1f;其实是有…

antv/g6基本使用教程

安装 & 引用 在项目中引入 G6 有以下两种方式&#xff1a;npm 引入&#xff0c;CDN 引入。 1 在项目中使用 npm 包引入 Step 1: 使用命令行在项目目录下执行以下命令&#xff1a; npm install --save antv/g6 Step 2: 在需要用的 G6 的 JS 文件中导入&#xff1a; imp…