Prometheus 提供了一种功能表达式语言 PromQL,允许用户实时选择和汇聚时间序列数据。表达式的结果可以在浏览器中显示为图形,也可以显示为表格数据,或者由外部系统通过 HTTP API 调用。

时间序列过滤器

选择指标名称为 http_requests_total 的所有时间序列:

http_requests_total

可以通过向花括号 {} 里附加一组标签来进一步过滤时间序列。例如:选择指标名称为 http_requests_total,job 标签值为 prometheus,group 标签值为 canary 的时间序列

http_requests_total{job="prometheus",group="canary"}

PromQL 还支持用户根据时间序列的标签匹配模式来对时间序列进行过滤,目前主要支持两种匹配模式:完全匹配和正则匹配。总共有以下几种标签匹配运算符

= : 选择与提供的字符串完全相同的标签。
!= : 选择与提供的字符串不相同的标签。
=~ : 选择正则表达式与提供的字符串(或子字符串)相匹配的标签。
!~ : 选择正则表达式与提供的字符串(或子字符串)不匹配的标签。

例如:选择指标名称为 http_requests_total,环境为 staging、testing 或 development,HTTP 方法不为 GET 的时间序列

http_requests_total{environment=~"staging|testing|development",method!="GET"}

我们还可以使用内置的 __name__ 标签来指定监控指标名称。
例如:表达式 http_requests_total 等效于 {name=“http_requests_total”}

这样的方式也支持正则。以下表达式表示选择指标名称以 http_requests 开头的所有指标:

{__name__=~"http_requests.*"}

区间向量过滤器

区间向量与瞬时向量的工作方式类似,唯一的差异在于在区间向量表达式中我们需要定义时间选择的范围,时间范围通过时间范围选择器 [] 进行定义,以指定应为每个返回的区间向量样本值中提取多长的时间范围。

时间范围通过数字来表示,单位可以使用以下其中之一的时间单位:

s - 秒
m - 分钟
h - 小时
d - 天
w - 周
y - 年

例如:选择在过去 5 分钟内指标名称为 http_requests_total,job 标签值为 prometheus 的所有时间序列:

we select all the values we have recorded within the last 5 minutes for all time series that have the metric name http_requests_total and a handler label set to prometheus:

http_requests_total{handler="prometheus"}[5m]


step=5m 表示取数据的间隔为5分钟一次
这里的5m即为下面所说的duration format

step=<duration | float>: Query resolution step width in duration format or float number of seconds.

时间位移操作

在瞬时向量表达式或者区间向量表达式中,都是以当前时间为基准。如果我们想查询5分钟前的瞬时样本数据,或昨天一天的区间内的样本数据呢? 这个时候我们就可以使用位移操作,位移操作的关键字为offset。

以下表达式返回相对于当前查询时间过去 5 分钟的 http_requests_total 值:

http_requests_total offset 5m

Promsql语法用法相关推荐

  1. springboot yml语法 ${} 用法

    yml语法  ${} 用法 yml中自定义一个域名属性:mytest:domainName: https://blog.csdn.net/imHanweihu/article/details/9611 ...

  2. create_engine语法用法注意[‘mysql+pymysql://root:123456@localhost:3306/python_db‘]书写格式不要随意加空格在中间

    python sqlalchemy中create_engine语法用法 示例:注意['mysql+pymysql://root:123456@localhost:3306/python_db']书写格 ...

  3. uni-app watch computed API作用语法用法 +案例

    一.computedAPI 1.1前言:在模板中,可以通过插值语法显示一些data中的数据,但是在某些情况下,一些数据可能需要进行转换后再显示eg:需要对多个data数据进行进行运算.三元运算符来决定 ...

  4. mysql left join_MySQL LEFT JOIN 语法用法与实例

    MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT JOIN 基本语法如下: ... ...

  5. mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例

    MySQL JOIN 语法概述 SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据. JOIN 通常与 ON 关键字搭配使用,基本语法如下: ... FROM ...

  6. SPMetal语法用法

    SPMetal 是一类用于生成实体类的命令行工具,这些类可向 Microsoft SharePoint Foundation 内容数据库提供面向对象的界面.虽然这些类主要用于 LINQ to Shar ...

  7. 第一章 JSON语法用法

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. Python 基础的语法用法

    默认情况下,Python 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码 第一个字符必须是字母表中字母或下划线 _ . 标识符的其他的部分 ...

  9. C++ C++基础语法入门总结(二)引用-内联函数-C++11新特性

    C++基础语法入门总结 C++引用 再谈引用和指针 C++内联函数 附加C++11新特性 auto关键字 基于范围的for循环 指针空值nullptr C++引用 引用:就是某一变量(目标)的一个别名 ...

最新文章

  1. 每日一道面试题(第7期)---Android补间动画与属性动画的区别
  2. OneAPM挂牌新三板,资本市场一片看好!
  3. 如何让网站用上HTML5 Manifest
  4. OpenCV捕获正弦波模式
  5. 对话Couchbase首席架构师:Couchbase是目前最好的NoSQL数据库平台
  6. upc 9519 New Game
  7. python绑定句柄容易么_Python 有什么奇技淫巧?
  8. python爬虫酷狗_python爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦
  9. bzoj 1673: [Usaco2005 Dec]Scales 天平(DFS)
  10. [转载] Python|range函数用法完全解读
  11. 20165333 2017-2018-2《Java程序设计》课程总结
  12. 【回归预测】基于matlab麻雀算法优化相关向量机RVM回归预测【含Matlab源码 1750期】
  13. Android开发之小程序-秒表
  14. bash: /home/jdk/jdk1.8.0_261/bin/java: /lib/ld-linux.so.2: bad ELF interpre问题
  15. ADP(自适应动态规划)-扩展HDP
  16. 百家号自媒体文章出现哪些因素会不推荐?
  17. TransTrack: Multiple Object Tracking with Transformer
  18. 关于快消产品的一点小小认识
  19. vue抽屉_实现抽屉列表-微信小程序
  20. 二十世纪一百位最著名的心理学家

热门文章

  1. 搭建Redis服务器: 设置变量school,值为tarena 查看变量school的值
  2. java毕业生设计医用物品管理系统计算机源码+系统+mysql+调试部署+lw
  3. 【科普】单元测试、集成测试、系统测试、验收测试、回归测试、Alpha测试、 Beta测试
  4. 算法表示法之大O表示法
  5. 大数据-孩子学习成绩分析
  6. Python 条件运算符的嵌套来完成此题:学习成绩
  7. 外贸电子商务网站的网络广告推广方案
  8. python爬虫实战(四):selenium爬虫抓取阿里巴巴采购批发商品
  9. 【无敌Python 】增强视频画质,就应该这么做
  10. poj 1830 高斯消元