prometheus container_cpu_usage_seconds_total,container_spec_cpu_quota, kube_pod_labels 三个指标使用group_left关联的详细案例
时间: 2023-06-28 15:04:15 浏览: 236
假设我们有一个 Kubernetes 集群,其中部署了多个 Pod。我们想要监控这些 Pod 的 CPU 使用情况,并按照 Pod 的标签进行分类。为此,我们可以使用以下三个指标:
- `container_cpu_usage_seconds_total`:表示容器的 CPU 使用情况,单位为秒。
- `container_spec_cpu_quota`:表示容器的 CPU 配额,单位为 CPU 核数。
- `kube_pod_labels`:表示 Pod 的标签信息。
我们可以使用 Prometheus 的 `sum` 函数计算 CPU 使用总量,并使用 `group_left` 关键字将 `kube_pod_labels` 按照标签信息进行分组。
具体来说,我们可以使用以下 Prometheus 查询语句:
```
sum by (pod,namespace) (rate(container_cpu_usage_seconds_total{image!="",name=~".+"}[5m])) / scalar(sum by(pod,namespace)(container_spec_cpu_quota{image!="",name=~".+"}))
```
上述语句会计算每个 Pod 的 CPU 使用率,然后按照 Pod 的标签信息进行分组。具体来说,它会:
1. 使用 `container_cpu_usage_seconds_total` 和 `container_spec_cpu_quota` 两个指标计算每个容器的 CPU 使用率。
2. 选取过去 5 分钟内的数据,避免过时数据干扰结果。
3. 排除掉没有设置名称的容器(`name=~".+"`)和没有设置镜像的容器(`image!=""`)。
4. 对每个 Pod 的 CPU 使用率求和,得到该 Pod 的总 CPU 使用率。
5. 将 Pod 按照 `pod` 和 `namespace` 标签进行分组,得到每个 Pod 的标签信息和 CPU 使用率。
这样,我们就可以按照 Pod 的标签信息对 CPU 使用率进行分类,并进行监控和分析。
阅读全文