promQL API 端点

promQL API end points

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

同时,我也在即时API端点发过这样的查询:

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

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

对正在发生的事情的细分是否正确?

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

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

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