【问题标题】:promQL API end pointspromQL API 端点
【发布时间】:2021-05-24 08:34:51
【问题描述】:

根据文档here,有 2 个 API 端点用于查询,一个用于范围查询 (GET /api/v1/query_range),一个用于即时查询 (GET /api/v1/query)

同时,我一直在向即时 API 端点发布这样的查询:

metric_name{db='cpu',  category='db'}[5m]

上面查询的返回范围向量(矩阵结果类型)具有指定的持续时间。我假设由于查询需要一个范围向量结果,尽管 API 端点用于即时查询,但这是返回的结果。开始时间是执行时间之前的 5 分钟,可以在 API 的“时间”URL 参数中指定,这实际上也是结束时间。不太清楚这一步是什么,我猜它正在收集所有可用的原始数据点?

这种对正在发生的事情的分解是否正确?

【问题讨论】:

    标签: prometheus promql victoriametrics metricsql


    【解决方案1】:

    如果查询以方括号结尾,/api/v1/query 将返回每个系列的多个数据点。有两种情况:

    • 如果查询不包含函数或运算符而只包含time series selector。例如,foo{bar="baz"}[5m]。在这种情况下,所选时间序列的原始样本在时间范围 (time-5m ... time] 上返回,其中 time 是传递给 /api/v1/query 的查询参数。
    • 如果查询包含函数或运算符。例如,count(foo{bar="baz"})[5m:]。在这种情况下,计算的数据点在时间范围 (time-5m ... time] 上返回,默认值为 stepstep 可以在方括号中冒号后的查询中显式传递。例如,count(m)[5m:10s] 将返回带有step=10s 的计算数据点。此类查询在 Prometheus 生态系统中称为 subqueries

    this article 中查看有关如何使用外部工具分析原始 Prometheus 数据的更多详细信息。

    【讨论】:

    • 感谢您的回复。如果查询中未指定,VictoriaMetrics 中的默认步骤是什么?
    • 默认步长为 5 分钟
    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2012-10-14
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多