合并指标并检索指标值作为属性?

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

假设我们有两个指标,样本数据点如下

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

以下是要求

  • 我只想从 kube_pod_container_resource_requests 中过滤“cpu”数据点
  • 根据两个指标的命名空间和托管集群对所有数据点进行求和
  • 基于命名空间和托管集群组合两个数据点

最后我想要如下的结果数据。

{managed_cluster:"id1", namespace:"ns1", cpu_request: 1.5, cpu_usage: 0.5}

你能帮我为这个场景编写 PROMQL 查询吗?我不确定如何组合指标并将值放入属性中,例如 cpu_request/cpu_usage。

kubernetes prometheus promql
1个回答
0
投票

您可能想根据您的要求尝试此 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)
}
© www.soinside.com 2019 - 2024. All rights reserved.