0

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

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

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

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

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

4

1 回答 1

1

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

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

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

于 2021-02-23T10:42:30.863 回答