Grafana 中的 CPU 指标,用于带有 Actuator Micrometer 和 Prometheus 的 Spring Webflux 应用程序

Posted

技术标签:

【中文标题】Grafana 中的 CPU 指标,用于带有 Actuator Micrometer 和 Prometheus 的 Spring Webflux 应用程序【英文标题】:CPU metrics in Grafana for Spring Webflux app with Actuator Micrometer and Prometheus 【发布时间】:2021-09-09 12:45:10 【问题描述】:

请教一个关于如何在 CPU 指标上建立视觉和洞察力的小问题。

我有一个 Spring Boot Webflux 应用程序,没什么特别的。 我引入了 Actuator、Micrometer 和 Prometheus 依赖项。

该应用具有开箱即用的 CPU 指标,我认为这非常酷。 我也相信这些指标包含大量信息。 不幸的是,我认为不了解 Grafana 或指标本身以充分释放其潜力。

指标是:

system_cpu_usage
process_cpu_usage
system_cpu_count
system_load_average_1m

不知道如何正确使用它们,我使用那些非常基本的菜鸟查询:

system_cpu_usage_ns_=“my_namespace",cluster=~”my_cluster"
process_cpu_usage_ns_=“my_namespace",cluster=~”my_cluster"
system_cpu_count_ns_=“my_namespace",cluster=~”my_cluster”
system_load_average_1m_ns_=“my_namespace",cluster=~”my_cluster"

有了这些,我确实得到了一些结果。问题是,我得到的只是一些平淡无奇的线条,无法采取进一步的见解或行动。

我在网上看到一些比较复杂的查询,比如

avg_over_time(process_cpu_usage_ns_=“my_namespace",cluster=~”my_cluster"[1h])

或者一些使用delta rate irate。但不确定他们来这里是为了什么。

什么是使用这些指标的正确方法以及我当前的查询有什么问题,因为现在和有意义的指标之间存在差距。

谢谢。

【问题讨论】:

【参考方案1】:

avg_over_time 最后一个 1h 的用法在您想为警报管理器制定规则的情况下很有用。想象一个用例,其中 cpu 上的每个峰值都会触发 alertmanager 规则。这是不受欢迎的。顺便说一句,在这个特定的用例中,我更喜欢使用histogram_quantile,因为平均值可以隐藏高值(只是因为它是平均值)。这里有一些百分位数的最佳实践:https://prometheus.io/docs/practices/histograms/#quantiles。然后使用rate 来确定分位数的时间窗口。

histogram_quantile(0.9, rate(
  process_cpu_usage_ns_=“my_namespace",cluster=~”my_cluster"[1h]
))

【讨论】:

以上是关于Grafana 中的 CPU 指标,用于带有 Actuator Micrometer 和 Prometheus 的 Spring Webflux 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Grafana 中显示的 netdata 指标显示不正确的值

如何使用 cpu-memory 使用指标可视化 grafana 上的结果?

指标包含 grafana 中的标签时的百分比图

如何在 Grafana 中添加下拉菜单?

如何在 Grafana 的 Hawkular 指标中监控应用程序的线程数?

基于 Njmon + InfluxDB + Grafana 实现性能指标实时可视监控