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

时间:2019-08-29 11:10:51

标签: prometheus promql

假设我们的指标created具有以下时间历元值(每个值在上一个历元值之后收集,因此实例xy不能同时可用)

created{instance:'x'} 1567000047
created{instance:'x'} 1567000047
created{instance:'x'} 1567000047
created{instance:'y'} 1567000050
created{instance:'y'} 1567000050
created{instance:'y'} 1567000050

标签instance的值是动态的。

如何使用PromQL查询数据以检测在纪元值1567000047时创建了一个实例,在1567000050中又创建了一个实例?

我想在以后绘制Grafana中的值,以查看何时创建新实例。或者至少我该如何总结最近3个小时(使用现有值)创建了多少个实例?

我无法sum的值,因为我会得到一条直线。据我所知,您只能从0之类的值中检测到丢失或丢失的更改。

1 个答案:

答案 0 :(得分:1)

在我阅读您的请求时,您想知道created指标不考虑实例标签而更改的时间。

您的第一个问题是无视实例标签,因为为了计算随时间变化的数量,您需要具有一个将向量转换为向量的函数。普罗米修斯2.7版之前不存在此功能。 如果您使用较旧的普罗米修斯版本,则必须使用adhoc recoding rule

我假设您安装了最新的Prometheus,并且可以使用子查询。以下内容应提供一个度量标准向量,为您提供最后一次创建的时间(过去3小时内):

(max(created))[3h:]

一旦得到,就可以使用changes()函数来计算更改的数量。为首次创建添加一个帐户:

changes((max(created))[3h:]) + 1

这将为您提供最近3个小时内创建的实例数。

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