如何在普罗米修斯的一次调用中执行多个查询

How to execute multiple queries in one call in Prometheus

我是 运行 kubernetes 集群中的 prometheus。

我需要每分钟向 Prometheus 发送查询,以从许多容器中收集许多指标的信息。匹配查询太多,必须合并。

我知道如何向 Prometheus 询问多个容器的一个指标信息:my_metric{container_name=~"frontend|backend|db"},但我还没有找到一种方法可以在一个查询中向 Prometheus 询问多个指标信息。

我正在 sql 查询中寻找与 'union' 等效的内容。

您可以使用 or 运算符,但这并不能一概而论,因为它会忽略指标名称。我建议对 API.

进行多次查询

我找到了 here 这个解决方案:{__name__=~"metricA|metricB|metricC",container_name=~"frontend|backend|db"}

PromQL 不提供在单个 api 调用中执行多个查询的能力。但是向后兼容 PromQL 的 MetricsQL 通过 union 函数提供了这样的能力:

union(
  query1,
  query2,
  ...
  queryN,
)

这 returns 所有 query* 查询的所有时间序列。请注意,预计每个时间序列都有一组唯一的标签(包括指标名称又名 ___name__ 标签)。如果不是这种情况,则将从结果中删除具有相同标签集的重复系列。在这种情况下,alias and label_set 函数可能有助于为每个 query* 添加唯一标签。