【问题标题】:PromQL avg() on a range vector范围向量上的 PromQL avg()
【发布时间】:2021-02-22 00:35:00
【问题描述】:

在范围向量上应用avg()是什么意思,例如:

avg(meric_name[1d]) 

根据文档here,它只对即时向量进行操作。 metric_name[1d] 返回一个范围向量。这个查询仍然在范围向量上运行并返回一个结果,没有任何错误的抱怨。

【问题讨论】:

    标签: prometheus promql victoriametrics metricsql


    【解决方案1】:

    这会正确返回解析错误:

    Error executing query: invalid parameter "query": 1:5: parse error: expected type instant vector in aggregation expression, got range vector
    

    你可以在http://demo.robustperception.io:9090/graph?g0.expr=avg(meric_name%5B1d%5D)%20&g0.tab=1&g0.stacked=0&g0.range_input=1h看到自己

    所以我怀疑您正在运行不同的查询。

    【讨论】:

    • 谢谢,这是针对没有抱怨的 victoriaMetrics 这样做的
    【解决方案2】:

    正如 Brian 已经指出的那样,avg(m[d]) 查询在 Prometheus 中不起作用,因为这是有效的 MetricsQL 查询并且是无效的 PromQL 查询。

    VictoriaMetrics 自动将 avg(m[d]) 查询转换为 avg(last_over_time(m[d]))last_over_time(m[d]) 为每个返回的数据点返回 m 超过 d 持续时间的最后一个原始值。然后avg(...) 计算结果时间序列的平均值。

    last_over_time() 函数可用于覆盖时间序列数据中的间隙,如果这些间隙超过传递给 /api/v1/query_rangestep 值。

    MetricsQL docs 上查看有关last_over_time() 功能的更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 2021-04-06
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多