【问题标题】:Get the latest value per timeserie获取每个时间序列的最新值
【发布时间】:2021-01-14 00:39:15
【问题描述】:

如何在 MetricsQL 或 PromQL 中查询每个时间序列的最新值?

例如,查询 metric_name 返回两个时间序列,分别表示 metric_name{job="foo"}metric_name{job="bar"} 的长范围:

{"metric":{"__name__":"metric_name","job":"foo"},"values":[.................. <long list>],
{"metric":{"__name__":"metric_name","job":"bar"},"values":[.................. <long list>]

有没有办法获取每个标签的最新值?因此该响应将仅包含两个时间戳——一个用于 job="foo",另一个用于 job="bar":

{"metric":{"__name__":"metric_name","job":"foo"},"values":[1510000000,123],
{"metric":{"__name__":"metric_name","job":"bar"},"values":[1610000000,321]

【问题讨论】:

    标签: prometheus promql victoriametrics metricsql


    【解决方案1】:

    你试过用last_over_time吗?

    last_over_time(m[d]) - returns the last value for m on the time range d.
    

    在此处查看有关 MetricsQL 的更多详细信息 - https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/MetricsQL

    您可能希望使用/api/v1/query 端点来获取即时查询结果。

    【讨论】:

    • /api/v1/query 将只返回一个结果,因为它需要 time=**** 参数,即使是隐式的
    • last_over_time() 也可能不会返回单个值,或者更准确地说,它尊重step 查询参数。我用不同的step 值尝试了last_over_time(vm_app_version[365d])。似乎问题必须更多地处理 step 参数而不是查询,但我不确定如何处理它。
    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 2020-06-27
    • 2015-08-24
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2021-09-18
    相关资源
    最近更新 更多