来自 WINdows 的 Prometheus 的准确 CPU 使用率

Posted

技术标签:

【中文标题】来自 WINdows 的 Prometheus 的准确 CPU 使用率【英文标题】:Accurate CPU usage with Prometheus from WIndows 【发布时间】:2017-06-11 19:30:00 【问题描述】:

将 wmi_exporter 或 scollector_exporter 与 Prometheus 一起使用,我发现很难获得准确的 CPU 使用率。这是我正在使用的指标和我用于 scollector 的查询:

os_cpu with returns: 1.54432653e+07

我用费率查询:

rate(os_cpuexported_instance="myHost"[30s])

这是我从 Grafana 的查询中得出的图表

os_cpu 返回总体 CPU 使用率,即所有内核,并将其与 Windows 中的 Taskmanager 进行比较,它不会相加,因为它显示 100% max。不可能获得 300% 的 CPU 使用率。

如何处理我的查询以获得更准确的测量结果?

【问题讨论】:

我不确定这个 os_cpu 指标来自哪里 - wmi_exporter?无论如何,也许最好的办法是在他们的 github 页面上询问该指标的含义。 @FuzzyAmi 是的,我认为通过使用更大的时间范围,我得到了更好的指标,我没有看到中间的峰值,但它是一个更好的图表。我用 2m 而不是 30s 【参考方案1】:

现在您可能已经找到了答案,但无论如何……这似乎很有用:

100 - (avg by (instance) (irate(windows_cpu_time_totalmode="idle", instance=~"$server"[1m])) * 100)

来自 grafana 仪表板库:https://grafana.com/grafana/dashboards/12566

【讨论】:

【参考方案2】:

如果你有多个核心,使用率可以超过 100%

我建议你使用 100 - (avg by (instance) (irate(node_cpujob="node",mode="idle"[5m])) * 100)

这里有更多关于它的detailed blog post

【讨论】:

node_cpu 是节点导出器参数,不适用于 windows exporter aka wmi exporter

以上是关于来自 WINdows 的 Prometheus 的准确 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章

使用来自其他变量选择的 grafana 变量依赖项(使用 prometheus)

使用来自 Kubernetes Metric 服务器的 PromQL (prometheus) 列出 Grafana 上的命名空间名称、命名空间年龄和状态

Prometheus:Prometheus 监控Windows机器

在不使用 spring-boot 执行器的情况下将来自 spring 应用程序的指标公开给 prometheus

来自自定义导出器的 Prometheus 指标显示在 /metrics 中,但不在 /graph (k8s) 中

重新启动 Pod 时发出警报:Windows 容器上的 Prometheus