我有一个 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 使用率?
在 promQL 中,可以通过以下步骤完成:
label_replace
添加一个标签来区分两个查询的结果。or
类似于 SQL 中的 UNION
,以合并两个查询的结果。sum by
以在每个查询中聚合。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",".*")
)
)