我可以从普罗米修斯获取第一个和最后一个指标之间的时间增量吗?

问题描述 投票:0回答:1

例如,我有 Gauge my_metric。

my_metric{job="1"} 1.0 - at 13:00 - first
my_metric{job="1"} 1.0 - at 13:10
my_metric{job="1"} 1.0 - at 13:20 - last

如何获得从第一个到最后一个指标的timedelta?我需要 13:20 - 13:00 = 20 分钟。

我尝试去做。 我得到了每个指标的时间戳:

timestamp(my_metric))

比我尝试获取增量:

delta(timestamp(my_metric)))

但是有一个错误:

bad_data: invalid parameter "query": 1:7: parse error: expected type range vector in call to function "delta", got instant vector

如果我尝试从

timestamp
获取范围向量:

delta(timestamp(my_metric))[1h])

我有一个错误:

bad_data: invalid parameter "query": 1:67: parse error: ranges only allowed for vector selectors
timestamp prometheus grafana metrics promql
1个回答
0
投票

您可以尝试使用 PromQL 子查询

increase
函数:

increase(
  timestamp(my_metric)[30d:1m]
)

这种方法有以下缺点:

  • 由于increase()

    函数中的
    外推,它可能会返回不正确的结果。

  • 它可能会很慢,因为 Prometheus 按每个

    step
    间隔计算子查询结果,其中
    step
    是持续时间,位于方括号中的冒号后面(它等于上面查询中的一分钟 (
    1m
    )) .

  • 方括号中的后视窗口必须覆盖整个时间序列,包括第一个和最后一个原始样本。如果不是这样,那么返回的结果将低于预期。

附注MetricsQL

 中有一个 
lifetime() 函数 - 这是我使用的与 PromQL 兼容的查询语言。该函数可以简化计算时间序列的生命周期。

© www.soinside.com 2019 - 2024. All rights reserved.