繁体   English   中英

如何使用 Prometheus wmi_exporter 使用 wmi_process_cpu_time_total 和 wmi_cs_logical_processors 计算每个进程的标准化百分比 CPU

[英]How to calculate normalized %CPU per process using Prometheus wmi_exporter using wmi_process_cpu_time_total and wmi_cs_logical_processors

  1. 使用以下 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),这将返回正确的向量。 不幸的是,我不能在这里使用硬编码值,因为我有许多实例具有不同数量的内核......

  1. 另一方面,以下查询返回实例上正确数量的核心:

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM