Basics

即时矢量选择器

=:匹配与标签相等的内容

!=:不匹配与标签相等的内容

=~: 根据正则表达式匹配与标签符合的内容

!~:根据正则表达式不匹配与标签符合的内容

示例:

http_requests_total{environment=~"staging|testing|development",method!="GET"} #这将匹配method不等于GET,environment匹配到staging,testing或development的http_requests_total请求内容。

向量选择器必须指定一个名称或至少一个与空字符串不匹配的标签匹配器。以下表达式是非法的

{job=~".*"} # Bad!

相反,这些表达式是有效的,因为它们都有一个与空标签值不匹配的选择器。

{job=~".+"} # Good!

{job=~".*",method="get"} # Good!

范围矢量选择器

持续时间仅限于数字,接下来是以下单位之一:

s - seconds

m - minutes

h - hours

d - days

w - weeks

y - years

在此示例中,我们选择在过去5分钟内为度量标准名称为http_requests_total且标签设置为job=prometheus的所有时间序列记录的所有值:

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

偏移量修改器

偏移修改器允许更改查询中各个即时和范围向量的时间偏移。

例如,以下表达式相对于当前查询5分钟前的http_requests_total值:

http_requests_total offset 5m

注意,偏移修改器需要立即跟随选择器,即以下内容是正确的:

sum(http_requests_total{method="GET"} offset 5m) // GOOD.

以下内容是不正确的:

sum(http_requests_total{method="GET"}) offset 5m // INVALID.

同样适用于范围向量。这将返回http_requests_total一周前的5分钟增长率:

rate(http_requests_total[5m] offset 1w)

OPERATORS

二元运算符

算术二元运算符

Prometheus中存在以下二进制算术运算符:

+ (addition)

- (subtraction)

* (multiplication)

/ (division)

% (modulo)

^ (power/exponentiation)

比较二元运算符

== (equal)

!= (not-equal)

> (greater-than)

< (less-than)

>= (greater-or-equal)

<= (less-or-equal)

逻辑/集二进制运算符

and (intersection)

or (union)

unless (complement)

一对一矢量匹配

一对一从操作的每一侧找到唯一的条目对。在默认情况下,这是格式为vector1 vector2之后的操作。如果两个条目具有完全相同的标签集和相应的值,则它们匹配。 ignore关键字允许在匹配时忽略某些标签,而on关键字允许将所考虑的标签集减少到提供的列表:

ignoring()

on()

Example input:

method_code:http_errors:rate5m{method="get", code="500"} 24

method_code:http_errors:rate5m{method="get", code="404"} 30

method_code:http_errors:rate5m{method="put", code="501"} 3

method_code:http_errors:rate5m{method="post", code="500"} 6

method_code:http_errors:rate5m{method="post", code="404"} 21

method:http_requests:rate5m{method="get"} 600

method:http_requests:rate5m{method="del"} 34

method:http_requests:rate5m{method="post"} 120

Example query:

method_code:http_errors:rate5m{code="500"} / ignoring(code) method:http_requests:rate5m

这将返回一个结果向量,其中包含每个方法的状态代码为500的HTTP请求部分,在过去5分钟内测量。在不忽略(代码)的情况下,由于度量标准不共享同一组标签,因此不会匹配。方法put和del的条目没有匹配,并且不会显示在结果中:

{method="get"} 0.04 // 24 / 600

{method="post"} 0.05 // 6 / 120

多对一和一对多矢量匹配

多对一和一对多匹配指的是"一"侧的每个向量元素可以与"多"侧的多个元素匹配的情况。必须使用group_left或group_right修饰符明确请求,其中left/right确定哪个向量具有更高的基数。

ignoring() group_left()

ignoring() group_right()

on() group_left()

on() group_right()

Example query:

method_code:http_errors:rate5m / ignoring(code) group_left method:http_requests:rate5m

在这种情况下,左向量每个方法标签值包含多个条目。因此,我们使用group_left表明这一点。右侧的元素现在与多个元素匹配,左侧具有相同的方法标签:

{method="get", code="500"} 0.04 // 24 / 600

{method="get", code="404"} 0.05 // 30 / 600

{method="post", code="500"} 0.05 // 6 / 120

{method="post", code="404"} 0.175 // 21 / 120

多对一和一对多匹配是高级用例,应该仔细考虑。通常正确使用忽略()可提供所需的结果。

聚合运算符

Prometheus支持以下内置聚合运算符,这些运算符可用于聚合单个即时向量的元素,从而生成具有聚合值的较少元素的新向量:

sum (calculate sum over dimensions) #范围内求和

min (select minimum over dimensions) #范围内求最小值

max (select maximum over dimensions) #范围内求最大值

avg (calculate the average over dimensions) #范围内求最大值

stddev (calculate population standard deviation over dimensions) #计算标准偏差

stdvar (calculate population standard variance over dimensions) #计算标准方差

count (count number of elements in the vector) #计算向量中的元素数量

count_values (count number of elements with the same value) #计算向量中相同元素的数量

bottomk (smallest k elements by sample value)#样本中最小的元素值

topk (largest k elements by sample value)#样本中最大的元素值

quantile (calculate φ-quantile (0 ≤ φ ≤ 1) over dimensions) #计算 0-1 之间的百分比数量的样本的最大值

这些运算符可以用于聚合所有标签维度,也可以通过包含without或by子句来保留不同的维度。

([parameter,] ) [without|by ()]

parameter仅用于count_values,quantile,topk和bottomk。without从结果向量中删除列出的标签,而所有其他标签都保留输出。 by相反并删除未在by子句中列出的标签,即使它们的标签值在向量的所有元素之间是相同的

例:如果http_requests_total具有按application,instance和group标签列出的时间序列,我们可以通过以下方式计算每个应用程序和组在所有实例上看到的HTTP请求总数:

sum(http_requests_total) without (instance)

等于:

sum(http_requests_total) by (application, group)

如果我们只对我们在所有应用程序中看到的HTTP请求总数感兴趣,我们可以简单地写:

sum(http_requests_total)

要计算运行每个构建版本的二进制文件的数量,我们可以编写:

count_values("version", build_version)

要在所有实例中获取5个最大的HTTP请求计数,我们可以编写:

topk(5, http_requests_total)

FUNCTIONS

abs(v instant-vector) #返回其绝对值

absent() # 如果传递给它的向量具有该元素,则返回空向量;如果传递给它的向量没有元素,则返回传入的元素。

Example query:

nginx_server_connections

nginx_server_connections{endpoint="metrics",instance="192.168.43.5:9913",job="nginx-vts",namespace="dev",pod="nginx-vts-9fcd4d45b-sdqds",service="nginx-vts",status="accepted"} 89061

nginx_server_connections{endpoint="metrics",instance="192.168.43.5:9913",job="nginx-vts",namespace="dev",pod="nginx-vts-9fcd4d45b-sdqds",service="nginx-vts",status="handled"} 2

absent(nginx_server_connections{job="nginx-vts"}) => {}

absent(nginx_server_connections{job="nginx-vts123"}) => {job="nginx-vts123"}

ceil(v instant-vector) #返回向量中所有样本值(向上取整数)

round(v instant-vector, to_nearest=1 scalar) #返回向量中所有样本值的最接近的整数,to_nearest是可选的,默认为1,表示样本返回的是最接近1的整数倍的值, 可以指定任意的值(也可以是小数),表示样本返回的是最接近它的整数倍的值

floor(v instant-vector) #返回向量中所有样本值(向下取整数)

changes(v range-vector) #对于每个输入时间序列,返回其在时间范围内(v range-vector)更改的次数

clamp_max(v instant-vector, max scalar) #限制v中所有元素的样本值,使其上限为max

clamp_min(v instant-vector, min scalar) #限制v中所有元素的样本值,使其下限为min

year(v=vector(time()) instant-vector) #返回UTC中给定时间的年份

day_of_month(v=vector(time()) instant-vector) #返回UTC中给定时间的月中的某一天,返回值为1到31

day_of_week(v=vector(time()) instant-vector) #返回UTC中给定时间的当周中的某一天,返回值为0到6

days_in_month(v=vector(time()) instant-vector) #返回UTC中给定时间的一个月的天数,返回值28到31

hour(v=vector(time()) instant-vector) #返回UTC中给定时间的当天中的某一小时,返回值为0到23

minute(v=vector(time()) instant-vector) #返回UTC中给定时间的小时中的某分钟,返回值为0到59

delta(v range-vector) #返回一个即时向量,它计算每个time series中的第一个值和最后一个值的差别

deriv(v range-vector) #计算每个time series的每秒的导数(derivative)

exp(v instant-vector) #计算v中所有元素的指数函数

histogram_quantile(φ float, b instant-vector) #从buckets类型的向量中计算φ(0 ≤ φ ≤ 1)百分比的样本的最大值

holt_winters(v range-vector, sf scalar, tf scalar) #根据范围向量中的范围产生一个平滑的值

idelta(v range-vector) #计算最新的2个样本值之间的差别

increase(v range-vector) #计算指定范围内的增长值, 它会在单调性发生变化时(如由于目标重启引起的计数器复位)自动中断

irate(v range-vector) #计算给定时间窗口内的每秒瞬时增加速率, 基于的是最新的2个数据点

rate(v range-vector) #计算给定时间窗口内的每秒的平均值

resets(v range-vector) #对于每个 time series , 它都返回一个 counter resets的次数

sort(v instant-vector) #对向量按元素的值进行升序排序

sort_desc(v instant-vector) #对向量按元素的值进行降序排序

sqrt(v instant-vector) #返回v中所有向量的平方根

time() #返回从1970-1-1起至今的秒数,UTC时间

参考链接:https://prometheus.io/docs/prometheus/latest/querying/basics/

如何使用 Entity Framework 构造动态查询表达式

一般的程序员做上几年以后, 或多或少的都有些代码的积累, 我也不例外. 作为微软技术程序员, 自从Linq和EF出来之后, 就基本上爱不释手了, 且不说执行效率的问题, 单单就开发效率和代码的可移植性 ...

Linq查询表达式

目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

《C&num;本质论》读书笔记(15)使用查询表达式的LINQ

15.1 查询表达式的概念 简单的查询表达式 private static void ShowContextualKeywords1() { IEnumerable sel ...

lambda表达式和查询表达式

(1)Lambda表达式定义: Lambda是创建匿名函数的另一种形式.它比对应的匿名方法更加的简化.因此,所有的情况都推荐使用Lambda表达式.   它可以包括表达式和语句,并且用于创建委托和事件 ...

LINQ 查询表达式(C&num; 编程指南)

语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上.  借助于 LINQ,查询现在 ...

Linq专题之创建Linq查询表达式

本节我们主要介绍一下如何创建查询集合类型,关系数据库类型,DataSet对象类型和XML类型的数据源的Linq查询表达式. 下面在实例代码ReadyCollectionData()函数创建了准备的数据 ...

LinQ实战学习笔记&lpar;三&rpar; 序列&comma;查询操作符&comma;查询表达式&comma;表达式树

序列 延迟查询执行 查询操作符 查询表达式 表达式树 (一) 序列 先上一段代码, 这段代码使用扩展方法实现下面的要求: 取进程列表,进行过滤(取大于10M的进程) 列表进行排序(按内存占用) 只保留 ...

LINQ之路 5:LINQ查询表达式

书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询表达式(Query Expression). LINQ方法语法的本质是通过扩展方法和Lambda表达式来创建查询.C# ...

C&num; 标准查询表达式

一.标准查询运算符 1.C#提供了标准查询运算符,例如我想选择专利一系列(pantents)中以年份19开头的专利,可以用如下语句: IEnumerable pantent ...

随机推荐

nginx中error&lowbar;page没有生效(nginx&plus;passenger&plus;rails)

应用部署方式为 nginx + passenger + rails 当我想要用nginx来默认处理400以上状态时,发现在rails返回respose之后,nginx不会再次执行error_page( ...

部署&period;NET开发环境

昨晚把家里的电脑重新部署.NET开发环境.从晚上21点安装到今天凌晨3点多才完成,还算顺利,但是耗时最漫长莫过于在安装Visual Studio 2015 Update3...... 第一,全新安装W ...

ipv4理论知识3-分类编址之两级编址

两级编制 分类编址时,同一网络中的所有地址都属于统一个地址块,而每个地址块包含两部分:网络标识和主机标识.网络标识指明了网络,主机标识则指明了连接到该网络的一台特定的主机.如下图描绘了分类编址中一个I ...

Swift语言之类型方法

Swift语言有很多特性,其中之一就是类型方法,相对于其他比较流行的编程语言(C#.Java),在Swift中类型方法最大的特征在于它的可继承性,我们举个例子说明: 俗话说,龙生龙凤生凤老鼠生儿会打洞 ...

Linux 修改默认文件关联打开程序

从总体上讲 /etc/gnome/defaults.list 保存了全局的打开方式-/.local/share/applications/mimeapps.list 保存了个人的打开方式当这两个文件不 ...

Linux学习笔记12——Unix中的进程

通过调用fork和exec函数都能创建新的进程,但两者有着本质的区别:fork函数拷贝了父进程的内存映像,而exec函数用用新的映像来覆盖调用进程的进程映像的功能. 一  fork函数 #includ ...

android jar 第三方包

工程交叉了,做相互引用 1.单纯的代码jar  不引用res http://terryblog.blog.51cto.com/1764499/564558 1.2.连带源码一起打包出来 http:// ...

为什么需要DevOps

过去一年以来,一批来自欧美的.不墨守陈规的系统管理员和开发人员一直在谈论一个新概念:DevOps.DevOps 就是开发(Development) 和运维(Operations)这两个领域的合并.(如 ...

Multimodal —— 看图说话(Image Caption)任务的论文笔记(三)引入视觉哨兵的自适应attention机制

在此前的两篇博客中所介绍的两个论文,分别介绍了encoder-decoder框架以及引入attention之后在Image Caption任务上的应用. 这篇博客所介绍的文章所考虑的是生成captio ...

SQL学习之查询

查询实例: 1.创建数据库并使用: create database school; use school; 2.创建表并插入内容: create table student( Sno char(9) ...

php mql获取结果集,promql查询表达式相关推荐

  1. php mql获取结果集,mql查询删除更新嵌入求指导php

    譬如一个msq数据库里有apple,banna,lemon,orange四张表,其中apple表里有brand,color,name,comment四个字段,要求通过对name的查找来修改或删除com ...

  2. php pdo获取查询数据_php使用PDO获取结果集的方法

    本文实例讲述了php使用PDO获取结果集的方法.分享给大家供大家参考,具体如下: fetch()方法 fetch()方法用于获取结果集的下一行,语法如下: mixed PDOStatement::fe ...

  3. Hibernate hql 查询指定字段并获取结果集

    Hibernate hql 查询指定字段并获取结果集 在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况: 1.查询全部字 ...

  4. Prometheus运维二 安装部署Prometheus及使用PromQL查询监控数据

    1,安装部署. 1,环境准备. 软件包下载地址:https://prometheus.io/download/ 地址 规划/软件包 192.168.0.10 Prometheus Server 192 ...

  5. 查询表达式和条件表达式

    查询表达式 查询表达式可以作为过滤,分组,注解或者是聚合的一个值或者是计算.有很多内置表达式可以帮助你完成自己的查询.表达式可以组合,甚至是嵌套,来完成更加复杂的计算 内置表达式 说明 这些表达式定义 ...

  6. mysql select表达式_MySQL数据库SELECT查询表达式解析

    数据的管理在很大一部分是在进行查找工作,而SELECT占据了很大的一部分 SELECT select_expr [,select_expr...] [ FROM table_reference WHE ...

  7. 微软免费图书《Introducing Microsoft LINQ》翻译Chapter2.1:C# 3.0 特性(对象初始化表达式\匿名类型\查询表达式)...

    本书翻译目的为个人学习和知识共享,其版权属原作者所有,如有侵权,请告知本人,本人将立即对发帖采取处理. 允许转载,但转载时请注明本版权声明信息,禁止用于商业用途! 博客园:韩现龙 Introducin ...

  8. 表达式树 php,Linux_LINQ学习笔记:表达式树,构建查询表达式 本节中, 我们 - phpStudy...

    构建查询表达式 本节中, 我们假设我们拥有一个这样的实体类: 1: [Table] public partial class Product 2: 3: { 4: 5: [Column(IsPrima ...

  9. Mongodb 基础 查询表达式

    数据库操作 查看:show dbs; 创建:use dbname; // db.createCollection('collection_name');    隐式创建,需要创建的数据库中有表才表示创 ...

最新文章

  1. 四个月没返校,挂在宿舍的内裤变“鸟窝”,网友:画面太美,不敢面对
  2. 动态改变标题_插入控件-gt;引用变量-gt;实现动态图表纵横筛选
  3. 最优化课堂笔记08——非线性规划中的一些其他方法(考试你懂得)
  4. HDU - 6992 Lawn of the Dead 线段树 + 思维
  5. 前端学习(2649):vue3.0的处理展示
  6. OpenStack Glance(镜像服务)基础架构:Basic architecture
  7. NYOJ-喷水装置(一)(贪心)
  8. 是时候了解原码、反码和补码
  9. python用户登录(输入用户名和密码)dic_Python使用装饰器模拟用户登陆验证功能示例...
  10. android 添加字幕,字幕添加器app-字幕添加器安卓版v2.0.1 - 起点软件园
  11. python好找工作吗2017-2017年 Python工程师面试经历分享(七家)
  12. 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深?
  13. 一些格言,希望自己铭记在心
  14. python读取以及保存gif图
  15. 联想涉密专用计算机 字体,Lenovo出厂高分屏笔记本高分辨率下字体模糊的解决方法...
  16. matlab 表示希腊字母yita,常用希腊字母读法
  17. 为什么固态硬盘删除数据后无法恢复?
  18. Oracle 表空间(tablespace)介绍
  19. 45个英文论文写作神网站!
  20. 遥感图像处理与一般的图像处理的区别

热门文章

  1. linux命令查看cpu序列号,在Linux中使用C / C ++获取机器序列号和CPU ID
  2. 浮动IP(FLOAT IP)
  3. c语言int转ascii码,c++将一个int型变量强制传唤成其对应的ascii码值
  4. 红队神器-Evil-Winrm详细使用指南
  5. 2014年9月17日
  6. Team Provisioning Profile
  7. 【多音字消歧】g2pM
  8. 【字符识别】基于matlab GUI模板匹配(区域生长法)字母+数字识别【含Matlab源码 1695期】
  9. jaca和mysql外卖系统_Maven+springmvc+spring+mybatis+mysql+dubbo+redis高仿饿了吗外卖点餐系统...
  10. 最新转转+闲鱼源码2.0版本带独立后台+个人二维码收款