我们正在运行GRAFANA/PROMETHEUS来监控我们的CPU指标,并查找所有CPU的聚合CPU使用情况。问题是我们已经启用了超线程,当我们强调CPU时,百分比超过了100%。我的问题是,如何限制cpu使用率,使其仅显示100%的使用率,即使cpu使用率很高,也不能显示更多。
p.S我试过在grafana中设置最大和最小极限,但图形峰值仍然超过了这个极限。
请给我这个问题的正确答案。
我尝试过的问题如下。
sum(irate(node_cpu_seconds_total{instance="localhost",job="node", mode!="idle"}[5m]))*100
100 - avg(irate(node_cpu_seconds_total{instance="localhost",job="node", mode!="idle"}[5m]))*100
以及我们尝试过的其他类似查询。
如果你只想"cap";将变量或表达式结果设置为最大值(即100(,您可以简单地使用Prometheus函数clamp_max。
因此,你可以做:
clamp_max(<expr>, 100)
这可能是最有用的查询。
(1 - avg(irate(node_cpu_seconds_total{instance="$instance",job="$job",mode!="idle"}[5m])))*100
替换实例IP和节点导出器作业名称。
要获得单CPU核心使用率:
sum by(cpu) (irate(node_cpu_seconds_total{job="<JOB_NAME>", mode!="idle"}[$__rate_interval]))
每个核心的CPU使用率
然后平均得到整个CPU使用情况:
avg (sum by(cpu) (irate(node_cpu_seconds_total{job="<JOB_NAME>", mode!="idle"}[$__rate_interval])))
CPU使用率所有核心
当机器进行编译工作时,您可以看到使用率不会100%溢出。