PromQL 查询按命名空间聚合有效 CPU 使用率

问题描述 投票:0回答:1

我有一个 PromQL 查询,它按命名空间聚合平均实际 CPU 使用率:

sum by (namespace) (
    avg_over_time(namespace:container_cpu_usage:sum{namespace=~"$namespace"}[$__range])
)

以及按命名空间聚合平均 CPU 请求的查询:

sum by (namespace) (
    avg_over_time(kube_pod_resource_request{resource="cpu", namespace=~"$namespace"}[$__range])
)

PromQL 有没有一种方法可以按命名空间聚合这两个查询的最大值,从而为我们提供按命名空间的平均有效CPU 使用率?

kubernetes prometheus grafana promql
1个回答
0
投票

在 promQL 中,可以通过以下步骤完成:

  1. 使用
    label_replace
    添加一个标签来区分两个查询的结果。
  2. 使用
    or
    类似于 SQL 中的
    UNION
    ,以合并两个查询的结果。
  3. 更改
    sum by
    以在每个查询中聚合。
  4. max by
    包裹所有内容以获得两个中较大的值。

您的情况的结果查询将是

max by (namespace) (
  sum by (namespace, name) (
    label_replace(
      avg_over_time(namespace:container_cpu_usage:sum{namespace=~"$namespace"}[$__range]),
      "name","cpu_usage",
      "namespace",".*")
    or
    label_replace(
      avg_over_time(kube_pod_resource_request{resource="cpu", namespace=~"$namespace"}[$__range]),
      "name","cpu_request",
      "namespace",".*")
  )
)

Grafana 中的转换

© www.soinside.com 2019 - 2024. All rights reserved.