PromQL-基础

摘要:
Prometheus提供了一种名为PromQL的函数查询语言,允许用户查询和聚合时间序列数据。表达式的结果可以在Prometheus表达式浏览器中显示为图形或表格数据。此外,外部系统也可以通过HTTP API使用它。Vector1,除非vector2生成由Vector1的元素组成的向量,并且vector2在标记集中没有与之完全匹配的元素。

一【简介】
Prometheus提供了一种称为PromQL(Prometheus查询语言)的函数查询语言,允许用户查询和聚合时间序列类型的数据。表达式的结果即可以显示为图形,也可在Prometheus的表达式浏览器中显示为表格数据,除此之外,也可以由外部系统通过HTTP API使用。

二 数据类型

1、即时向量(Instant vector):一组时间序列,每个时间序列包含一个样本,所有样本共享相同的时间戳

2、范围向量(Range vector ):一组时间序列,包含每个时间序列随时间变化的数据点范围

3、标量(Scalar ):一个简单的数字浮点值

4、String:一个简单的字符串值;当前未使用

根据不同的用例(例如,在绘制和显示表达式的输出时),只有其中一些类型是合法的,因为它们来自用户指定的表达式。例如,返回即时向量的表达式是唯一可以直接绘制图形的类型。

三 时间序列选择器

1、即时向量选择器(Instant vector selectors)

即时向量选择器允许在给定的时间戳(即时)为每个选择一组时间序列和一个样本值:在最简单的形式中,只指定一个名称。这将生成一个包含具有此名称的所有时间序列的元素的即时向量。
如: http_requests_total,此示例选择具有http_requests_total 指标名称的所有时间序列
你可以通过在大括号{}中附加以逗号分隔的标签匹配器列表来进一步筛选这些时间序列:
此示例仅选择具有http_requests_total metric name且作业标签设置为prometheus且其组标签设置为canary的时间序列:http_requests_total{job="prometheus",group="canary"}
也可以与标签值负匹配,或与正则表达式匹配标签值:

=:选择与提供的字符串完全相等的标签。
!=:选择不等于提供的字符串的标签。 
=~:选择正则表达式与提供的字符串匹配的标签。
!~:选择与提供的字符串不匹配的正则表达式标签

2、范围向量选择器(Range Vector Selectors)

范围向量文本的工作方式与即时向量文本类似,只是它们从当前瞬间选择一个样本范围。从语法上讲,范围持续时间附加在向量选择器末尾的方括号([])中,以指定应为每个结果范围向量元素获取时间值的时间间隔。
持续时间指定为一个数字,紧接着是下列单位之一:

s - seconds
m - minutes
h - hours
d - days
w - weeks
y - years

例子1:查询过去5分钟内记录的所有值,这些时间序列的度量名称为http_requests_total,作业标签设置为prometheus:
http_requests_total{job="prometheus"}[5m]

3、偏移修改器(Offset modifier)

offset修饰符允许更改查询中单个瞬间向量和范围向量的时间偏移。它必须紧跟在选择器后面。

例子:返回过去相对于当前查询计算时间总共5分钟的值:

http_requests_total offset 5m

四 操作符

1、算术运算符

+ (addition)
- (subtraction)
* (multiplication)
/ (division)
% (modulo)
^ (power/exponentiation)

算术运算符定义在标量/标量、矢量/标量和矢量/矢量值对之间。
1)在两个标量之间,行为是显而易见的:它们计算为另一个标量,这是应用于两个标量操作数的运算符的结果。
2)在瞬时向量和标量之间,运算符应用于向量中每个数据样本的值。如果时间序列瞬时向量乘以2,则结果是原始向量的每个样本值乘以2的另一个向量。
3)在两个即时向量之间,对左侧向量中的每个条目及其右侧向量中的匹配元素应用一个算术运算符。结果将传播到结果向量中,分组标签将成为输出标签集。将删除度量名称。在右向量中找不到匹配项的项不是结果的一部分。

2、比较运算符

== (equal)
!= (not-equal)
> (greater-than)
< (less-than)
>= (greater-or-equal)
<= (less-or-equal)

比较运算符在标量/标量、矢量/标量和矢量/矢量值对之间定义。默认情况下,它们会过滤。可以通过在运算符之后提供bool来修改它们的行为,该运算符将为值返回0或1,而不是筛选。
在两个标量之间,必须提供bool修饰符,并且根据比较结果,这些运算符将生成另一个标量,即0(false)或1(true)。
在瞬时向量和标量之间,这些运算符应用于向量中每个数据样本的值,并从结果向量中删除比较结果为假的向量元素。如果提供了bool修饰符,则要删除的向量元素的值为0,而要保留的向量元素的值为1。
在两个即时向量之间,默认情况下,这些运算符充当应用于匹配项的筛选器。表达式不为真或在表达式的另一侧找不到匹配项的向量元素将从结果中删除,而其他元素将传播到结果向量中,分组标签将成为输出标签集。如果提供了bool修饰符,则本应删除的向量元素的值为0,保留的向量元素的值为1,分组标签再次成为输出标签集。

3、逻辑运算符

逻辑运算符仅在瞬时向量之间定义:

and (intersection)
or (union)
unless (complement)

vector1和vector2产生一个由vector1的元素组成的向量,其中vector2中的元素具有完全匹配的标签集。其他元素被删除。度量名称和值是从左侧向量继承过来的。
vector1或vector2生成一个包含vector1的所有原始元素(标签集+值)和vector2的所有元素的向量,这些元素在vector1中没有匹配的标签集。
vector1,除非vector2生成一个由vector1的元素组成的向量,而vector2中没有与之完全匹配的标签集的元素。两个向量中的所有匹配元素都将被删除。

4、聚合运算符

普罗米修斯支持以下内置聚合运算符,可用于聚合单个即时向量的元素,从而生成具有聚合值的更少元素的新向量:

sum(计算维度上的总和)

min(选择最小尺寸)

max(选择最大尺寸)

avg(计算尺寸上的平均值)

stddev(计算尺寸上的总体标准偏差)

stdvar(计算维度上的总体标准方差)

count(计算向量中的元素数)

count_值(计数具有相同值的元素数)

bottomk(按样本值的最小k元素)

topk(样本值最大的k元素)

quantile (根据尺寸计算φ-分位数(0≤φ≤1)

免责声明:文章转载自《PromQL-基础》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何在.netcore 上实现 Rbac 权限管理学习WPF——WPF布局——了解布局容器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Prometheus介绍及二进制部署(一)

一、Prometheus是什么 Prometheus是什么Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。 https:...

【时间序列】-航空数据预测

学习预测时序数据,如有侵权,请联系删除。 主要参考: A comprehensive beginner’s guide to create a Time Series Forecast (with Codes in Python)   目的: 翻译学习文章编写方式 学习解决时间序列问题的基本步骤   介绍 时间序列(从现在开始称为TS)被认为是数据科学...

Temporal Link Prediction: A Survey时间链路预测综述

Keywords:Dynamic networks · Temporal networks · Link prediction 1 介绍 下图表示时变网络的三种常见表示,它们有助于捕获网络的动态 快照:网络被表示为一系列静态网络,每一步一个。 接触序列:如果交互持续时间可以忽略不计,则将网络表示为三个一组(i, j, t),其中i和j为实体,t为交互...

入选 SIGMOD2021 的时间序列多周期检测通用框架 RobustPeriod 如何支撑阿里业务场景?

简介: 本文除了介绍RobustPeriod的核心技术亮点,还将重点解释如何将它构筑成服务来解决阿里云的业务痛点。 近日,由阿里云计算平台和阿里云达摩院合作的时序多周期检测相关论文RobustPeriod: Robust Time-Frequency Mining for Multiple Periodicity Detection被SIGMOD 2021...

R语言从经济时间序列中用HP滤波器,小波滤波和经验模式分解等提取周期性成分分析

原文链接:http://tecdat.cn/?p=9350 经济时间序列的分析通常需要提取其周期性成分。这篇文章介绍了一些方法,可用于将时间序列分解为它们的不同部分。它基于《宏观经济学手册》中Stock和Watson(1999)关于商业周期的章节,但也介绍了一些较新的方法,例如汉密尔顿(2018)替代HP滤波器,小波滤波和经验模式分解。 数据 我使用从...

如何预测股票分析--先知(Prophet)

在上一篇中,我们探讨了自动ARIMA,但是好像表现的还是不够完善,接下来看看先知的力量! 先知(Prophet) 有许多时间序列技术可以用在股票预测数据集上,但是大多数技术在拟合模型之前需要大量的数据预处理。Prophet(先知)由Facebook设计和开发,是一个时间序列预测库,不需要数据预处理,并且非常容易实现。先知的输入是一个带有两列的数据框:日期和...