20

Prometheus 是围绕返回指标的时间序列表示而构建的。然而,在许多情况下,我只关心指标现在的状态,我很难找到一种可靠的方法来获取指标的“最新”值。

因为现在它每 30 秒获取一次指标,所以我尝试了这样的方法:

my_metric[30s]

但这感觉很脆弱。如果指标的日期在数据点之间超过或少于 30 秒,那么我要么得到一个以上的结果,要么得到零个结果。

如何获取指标的最新值?

4

5 回答 5

17

您只需要my_metric,默认情况下将返回不超过 5 分钟的最新值。

于 2016-11-21T21:21:26.827 回答
6

如果您直接使用query_range API 端点使用Prometheus ,您将获得时间序列。如果您切换到查询API 端点,您将获得最后一个值。

Grafana 中,您可以通过切换Instant -toggle 从时间序列切换到最后一个值。

于 2021-08-25T13:32:12.867 回答
4

我通过 prom/cloudwatch-exporter 从 AWS 获得的指标也有类似的问题。AWS 似乎需要一段时间才能收敛其 CloudWatch 指标。过去大约需要 10 分钟,但现在更像是 13 分钟。我们一直遗漏诸如磁盘空间不足之类的问题,因为这些指标完全无法到达 prometheus,因此我们的警报毫无用处。

我发现“偏移”在这里很有用,我想要最后一个指标,但它在 5m 截止值之外。因此,通过指定偏移量,我仍然可以获取一个值而不是什么都没有。例子:

aws_ec2_cpuutilization_average offset 15m
于 2020-05-13T20:15:05.247 回答
4

鉴于这种:

namespace_metricname_count_sum{id="1",status="to-do"}
namespace_metricname_count_sum{id="1",status="in-progress"}

如果要获取最新值,则需要使用在这种情况下的共同值,即id=~".*"通过对日志进行分组,您将能够获取时间范围内的最后一个值

count ( max_over_time ( namespace_metricname_count_sum{id=~".*"}[12h])) by (status)
于 2018-05-28T20:09:59.360 回答
-1

要在不使用 hacky PromQL 查询的情况下获取my_metric 超过 5m的最新值,您可以修改定义query.lookback-delta此默认5m值的 Prometheus 选项。

例如,--query.lookback-delta=1d在 Prometheus 启动选项中指定并重新启动服务将导致 PromQL 查询返回24 小时回顾my_metric的最新值。my_metric


此“回溯时间窗口”之外的指标称为stale

于 2020-06-25T19:21:17.417 回答