1

我们开始使用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过程,因为我在userprivileged两种模式下为一个进程获得了两个不同的指标。

谁能帮我正确计算 CPU 处理时间总指标并将它们转换为 perc。?

谢谢你,我会很感激任何帮助!

4

1 回答 1

3

我希望这个能帮上忙!结果与 Windows 性能管理器几乎相同。因此,对于运行服务(任务、进程)的 CPU %:

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

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

干杯!

于 2020-06-17T14:39:50.027 回答