假设我们有两个指标,样本数据点如下
kube_pod_container_resource_requests{managed_cluster:"id1", namespace:"ns1", resource="cpu", pod:"pod1"...} 0.5
kube_pod_container_resource_requests{managed_cluster:"id1", namespace:"ns1", resource="cpu", pod:"pod2"...} 1
kube_pod_container_resource_requests{managed_cluster:"id1", namespace:"ns1", resource="memory", pod:"pod1"...} 17898878
kube_pod_container_resource_requests{managed_cluster:"id1", namespace:"ns1", resource="memory", pod:"pod2"...} 67656776
node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{managed_cluster:"id1", namespace:"ns1", pod:"pod1"...} 0.3
node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{managed_cluster:"id1", namespace:"ns1", pod:"pod2"...} 0.2
以下是要求
最后我想要如下的结果数据。
{managed_cluster:"id1", namespace:"ns1", cpu_request: 1.5, cpu_usage: 0.5}
你能帮我为这个场景编写 PROMQL 查询吗?我不确定如何组合指标并将值放入属性中,例如 cpu_request/cpu_usage。
您可能想根据您的要求尝试此 PromQL 查询。
# Filter for "cpu" resource and sum requests by namespace and managed_cluster
sum(kube_pod_container_resource_requests{resource="cpu"}) by (managed_cluster, namespace)
# Filter for "cpu" usage and sum usage by namespace and managed_cluster
sum(irate(node_namespace_pod_container:container_cpu_usage_seconds_total:sum{resource="cpu"}[5m])) by (managed_cluster, namespace)
# Combine the results with label mapping for clarity
join (
# First query (resource requests)
sum(kube_pod_container_resource_requests{resource="cpu"}) by (managed_cluster, namespace) as cpu_request
) with (
# Second query (CPU usage)
sum(irate(node_namespace_pod_container:container_cpu_usage_seconds_total:sum{resource="cpu"}[5m])) by (managed_cluster, namespace) as cpu_usage
) on (managed_cluster, namespace)
此查询按命名空间和托管集群检索 CPU 请求和 CPU 使用率的总和,然后将它们组合成单个对象,并将标签映射到所需属性(
cpu_request
和 cpu_usage
)。
输出将是这样的:
{
managed_cluster: "id1",
namespace: "ns1",
cpu_request: 1.5, // Sum of CPU requests for the namespace and cluster
cpu_usage: 0.5 // Sum of CPU usage rate for the namespace and cluster (over 5m window)
}