假设我们的指标created
具有以下时间历元值(每个值在上一个历元值之后收集,因此实例x
和y
不能同时可用)>
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
之类的值中检测到丢失或丢失的更改。
答案 0 :(得分:1)
在我阅读您的请求时,您想知道created
指标不考虑实例标签而更改的时间。
您的第一个问题是无视实例标签,因为为了计算随时间变化的数量,您需要具有一个将向量转换为向量的函数。普罗米修斯2.7版之前不存在此功能。 如果您使用较旧的普罗米修斯版本,则必须使用adhoc recoding rule。
我假设您安装了最新的Prometheus,并且可以使用子查询。以下内容应提供一个度量标准向量,为您提供最后一次创建的时间(过去3小时内):
(max(created))[3h:]
一旦得到,就可以使用changes()函数来计算更改的数量。为首次创建添加一个帐户:
changes((max(created))[3h:]) + 1
这将为您提供最近3个小时内创建的实例数。
请注意,子查询可能在Prometheus上很繁琐,而使用记录规则会有所帮助。