kubernetes - 用于获取集群范围内的命名空间 CPU 使用情况的 PromQL 查询
问题描述
我在不同的命名空间中运行我们应用程序的不同版本,并且我已经设置了一个 prometheus 和 grafana 堆栈来监控它们。我使用下面的 promql 来获取不同 pod 的 cpu 使用率(占 1 个核心的百分比),它返回的值与我从以下位置获得的值匹配kubectl top pods -n namespace
:
sum (rate (container_cpu_usage_seconds_total{id!="/",namespace=~"$Namespace",pod=~"^$Deployment.*$"}[1m])) by (pod)*100
问题是我想获取命名空间集群范围内所有 pod 的总 cpu 使用率,我尝试了不同的查询,但它们返回的值与我从上述 promql 或kubectl top pods -n namespace
.
我尝试过的 promql 查询:
sum (rate (container_cpu_usage_seconds_total{namespace=~"$Namespace",pod=~"^$Deployment.*$"}[1m])) by (namespace)
sum (rate (container_cpu_usage_seconds_total{namespace=~"$Namespace",pod=~"^$Deployment.*$"}[1m]))
我正在Singlestat
为此使用,并且在visualization
从Value
部分中我尝试了不同的show
方法,例如平均,总计,当前但未返回正确的值。
我的问题是如何获得命名空间集群范围内所有 pod 的总 cpu 使用率?
解决方案
我进行了一些研究,发现很少有可以满足您需求的答案:
为了简单地监控集群级别的 CPU 使用情况,请使用:
sum (rate (container_cpu_usage_seconds_total{id="/"}[1m])) / sum (machine_cpu_cores) * 100
如果您想查看命名空间的 %CPU 使用率,您需要先计算命名空间 CPU 使用率,然后将其除以集群中的可用 CPU。它看起来像这样:
sum (rate (container_cpu_usage_seconds_total{namespace="$Namespace"}[1m])) / sum(machine_cpu_cores) * 100
您还可以使用 Prometheus 的任意标签来计算命名空间的 CPU 使用率。更多细节可以在这里找到。
最后你可以试试Prometheus exporter。
请让我知道这是否有帮助。
推荐阅读
- typescript - 从类型中选择“自己的”属性
- uncrustify - 如何避免在左括号和&符号之间添加空格(&
- php - 完整性约束违规:1452 无法添加或更新具有截止引用的子行
- kubernetes-ingress - 在裸机安装cent os中找不到入口的IP地址
- html - 仪表——改变颜色
- c# - 在c#中从二进制值转换为双精度时出错
- sql - 在 SQL 查询中搜索“$”字符
- c# - 如何在 core2.2 mvc 项目中使用 IClaimsTransformation
- python - WTForms - 内置消息翻译
- react-native - (已解决)TypeError:未定义不是对象(评估'y.Font.isLoaded')