我正在尝试使用prometheus测量来获得在库伯内特斯中运行的每个微服务的CPU使用率百分比,以优化CPU资源和限制。
我有一个设置,其中每个客户有4个微服务运行在服务器上。每个微服务具有单独的存储器资源和限制以及单独的CPU资源和限制。为了从prometheus获得平均值,我使用以下查询:
avg_over_time(sum(rat(container_cpu_usage_seconds_total{name=5m^k8s_.", namesspace=5m$namesspace",container_name!="POD", pod=5m^$Deplo.$"}[~"])[24h:~"])/avg_over_time(sum(container_spec_cpu_quota{name=~"^k8s_.", namesspace=~"$namesspace",container_name!="POD", pod=~"^$Deplo".$"}/container_spec_cpu_period{name=~"^k8s_.", namesspace=~"$namesspace",container_name!="POD", pod=~"^$Deplo".$"})[24h:~"])*100
为了检查上面的值是否正确,我进入每个Kubernetes pod并使用以下命令检查CPU使用情况:kubectl-n{namespace}top pod{Deployment}
为了检查CPU限制,我使用命令:kubectl-n{namesspace}描述pod{部署}
在那里我得到了CPU限制。
然后我进行计算:CPU 使用率除以 CPU 限制乘以 100 等于当前 CPU 使用率的百分比。
我从Kubernetes中的CPU使用率和限制得到的值与我使用prometheus查询得到的值不同(我得到的一些值很接近,有些值很差)。以下是Prometheus和Kubernetes的CPU使用百分比示例:
有人对我的测量是否正确有任何意见吗?我的prometheus查询中是否有错误,或者我如何从Kubernetes获取值?我想确保使用prometheus正确测量CPU使用率百分比
您能否针对一项服务尝试以下查询,并根据您的要求修改该查询:
总和(速率 (container_cpu_usage_seconds_total{id=“/”}[1m])) / 总和 (machine_cpu_cores) * 100
我还跟踪每个 Pod 的 CPU 使用率。
我在GitHub上有一个完整的kubernetes-prometheus解决方案,也许可以帮助您提供更多指标:https://github.com/camilb/prometheus-kubernetes.
希望这能有所帮助!结果与Windows性能管理器非常相似。因此,对于运行服务(任务、进程)的CPU百分比:
求和依据 (进程,主机名)(愤怒(wmi_process_cpu_time_total{规模集=“名称”, 进程=~