prometheus container_cpu_usage_seconds_total,container_spec_cpu_quota, kube_pod_labels 三个指标使用 group_left 关联的详细案例
时间: 2023-06-28 10:04:18 浏览: 187
假设我们有一个 Kubernetes 集群,其中运行着一组容器化的应用程序。我们想要监控这些应用程序的 CPU 使用情况,并且希望能够按照应用程序的标签进行聚合。
为此,我们可以使用 Prometheus 中的以下三个指标:
1. `container_cpu_usage_seconds_total`:表示容器的 CPU 使用时间总量,单位为秒。
2. `container_spec_cpu_quota`:表示容器的 CPU 配额,即可用 CPU 占总 CPU 的比例。
3. `kube_pod_labels`:表示 Pod 的标签集合。
我们可以使用以下 PromQL 查询:
```
sum by (pod, app) (container_cpu_usage_seconds_total) / sum by (pod, app) (container_spec_cpu_quota) * 100 > 80
```
该查询会计算每个 Pod 中每个应用程序的 CPU 使用率,并将其与该应用程序的 CPU 配额进行比较,如果使用率超过了 80%,则将该 Pod 计入结果集。
我们还可以使用 `group_left` 关键字,将 `container_cpu_usage_seconds_total` 和 `container_spec_cpu_quota` 按照 Pod 的标签进行聚合:
```
sum by (pod, app) (container_cpu_usage_seconds_total) / on (pod) group_left app kube_pod_labels(container_cpu_usage_seconds_total{container_name!="POD", namespace="default"}) * on (pod) group_left app kube_pod_labels(container_spec_cpu_quota{container_name!="POD", namespace="default"}) * 100 > 80
```
该查询会先按照 `pod` 和 `app` 进行 `container_cpu_usage_seconds_total` 的聚合,然后将结果按照 `pod` 进行聚合,并将 `kube_pod_labels` 的值添加到结果集中。接着,将 `container_spec_cpu_quota` 按照 `pod` 和 `app` 进行聚合,并将结果与前面的结果集进行 `group_left` 连接,最终计算每个 Pod 中每个应用程序的 CPU 使用率,并将其与该应用程序的 CPU 配额进行比较,如果使用率超过了 80%,则将该 Pod 计入结果集。
阅读全文