Prometheus 普罗米修斯:检测指标的创建(相同的名称,不同的标签)

Prometheus 普罗米修斯:检测指标的创建(相同的名称,不同的标签),prometheus,promql,Prometheus,Promql,假设我们创建了具有以下时间历元值的度量(每个值在前一个值之后收集,因此实例x和y不能同时使用) label实例的值是动态的 如何使用PromQL查询数据,以检测在epoch值156700047时创建了一个实例,而在156700050时创建了另一个实例 我想在以后绘制Grafana中的值,以查看何时创建新实例。或者至少我如何计算过去3小时内创建的实例数(使用现有值) 我不能求和,因为我会得到一条直线。据我所知,您无法检测到从缺失到某物的更改,例如,只能从0之类的值检测更改。当我阅读您的请求时,您想

假设我们创建了具有以下时间历元值的度量
(每个值在前一个值之后收集,因此实例
x
y
不能同时使用)

label
实例的值是动态的

如何使用PromQL查询数据,以检测在epoch值156700047时创建了一个实例,而在156700050时创建了另一个实例

我想在以后绘制Grafana中的值,以查看何时创建新实例。或者至少我如何计算过去3小时内创建的实例数(使用现有值)


我不能求和,因为我会得到一条直线。据我所知,您无法检测到从缺失到某物的更改,例如,只能从
0
之类的值检测更改。

当我阅读您的请求时,您想知道
创建的
度量更改的时间,而不考虑实例标签

您的第一个问题是忽略实例标签,因为为了计算随时间变化的数量,您需要有一个将向量转换为向量的函数。这在普罗米修斯2.7版之前是不存在的。 如果你有一个旧版本的普罗米修斯,你将不得不使用一个

我假设您最近安装了Prometheus,并且可以使用子查询。以下内容应提供一个度量向量,给出上次创建的时间(过去3h):

一旦你得到了,你就可以使用这个函数来计算改变的次数。为第一次创建添加一个帐户:

changes((max(created))[3h:]) + 1
这将为您提供过去3小时内创建的实例数


请注意,Prometheus的子查询可能很繁重,使用记录规则会有所帮助。

感谢您提及子查询。在我的例子中,我不需要
+1
,因为对于没有创建的新实例,0是可以的。
(max(created))[3h:]
changes((max(created))[3h:]) + 1