普罗米修斯。 CPU 处理时间总计 %

Prometheus. CPU process time total to % percent

我们开始使用 PrometheusGrafana 作为监控 Service Fabric 集群的主要工具。为了定位 Prometheus,我们使用 wmi_exporter,带有预定义参数:CPU、系统、进程、服务、内存等。我们的主要目标是开始监控我们的产品Azure Service Fabric 中每个实例节点组上的服务。

例如,我们正在使用此 PQuery 来计算总 CPU 使用百分比:

100 - (avg by (hostname) (irate(wmi_cpu_time_total{scaleset="name",mode="idle" }[5m])) * 100) 和指标 +- 看起来很现实。

直到我们开始编写服务查询。

对于服务,sum by (process,hostname)(irate(wmi_process_cpu_time_total{scaleset="name", process=~"processes"}[5m])) * 100,指标有时似乎不切实际,尤其是与总 CPU 时间百分比进行比较后,这一点尤为明显。我找到了一篇关于乘以 100 以从 CPU 时间获取 % 的文章,但在这种情况下,我得到的指标约为 170% 或更多。也许我需要把它分成CPU个核心数?

关于查询,我正在使用 sum 进程,因为我在两种模式下为一个进程获得两个不同的指标,user特权.

任何人都可以帮助我正确计算 CPU 处理时间总指标并将它们转换为 perc。 ?

谢谢,如有任何帮助,我将不胜感激!

希望对您有所帮助! 结果与 Windows 性能管理器几乎相同。 因此,对于 CPU % 对于 运行 服务(任务、进程):

sum by (process,hostname)(irate(wmi_process_cpu_time_total{scaleset="name", process=~"processes"}[5m])) * 100 / 2 (number of CPU cores)

首先,您汇总了 运行 进程的所有指标,导出器提供相同进程 ID 的结果:用户和内核模式指标,因此需要汇总。主机名(实例等)也必须这样做。就我而言,我有 2 到 5 个实例的 Azure 规模集。它必须乘以 100 才能得到 % 并除以 CPU 核心数。

干杯!