[英]How to calculate normalized %CPU per process using Prometheus wmi_exporter using wmi_process_cpu_time_total and wmi_cs_logical_processors
使用以下 promql,我成功获得了每个进程的 %CPU:
sum by (process, process_id) (rate(wmi_process_cpu_time_total{instance="my_instance", process="my_process"}[5m]))*100/( amount_of_cores )
如果 amount_of_cores 是硬编码的标量(在我的例子中是 32),这将返回正确的向量。 不幸的是,我不能在这里使用硬编码值,因为我有许多实例具有不同数量的内核......
另一方面,以下查询返回实例上正确数量的核心:
wmi_cs_logical_processors{instance="my_instance"}
不幸的是,当我将此查询用作分隔符时 - 它什么都不返回。 据我了解,问题是第一个查询有多个标签,但第二个 - 只有一个“实例”,因此直接除法不返回任何内容。
我能在这里做什么?
在写这个问题的过程中,我找到了答案。 因此,万一有人感兴趣......要将一个向量划分为另一个具有不同标签的向量,您应该使用 ignoring(labels_not_existing_in_divider)、group_left 和除法器上的一些聚合器(我使用 sum)。
((sum by (process, process_id) (rate(wmi_process_cpu_time_total{instance=~"$hostname.*"}[5m]))*100))
/
ignoring(process, process_id) group_left sum (wmi_cs_logical_processors{instance=~"$hostname.*"})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.