prometheus - Grafana 中的 CPU 指标,用于带有 Actuator Micrometer 和 Prometheus 的 Spring Webflux 应用程序
问题描述
请关于如何构建 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
. 但不确定他们来这里是为了什么。
使用这些指标的正确方法是什么,以及我当前的查询有什么问题,因为现在和有意义的指标之间存在差距。
谢谢你。
解决方案
如果您想为警报管理器制定规则,则使用avg_over_time
for last1h
很有用。想象一个用例,其中 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]
))
推荐阅读
- python - cv2.error: OpenCV(3.4.3) 播放完视频后出错
- rancher - Rancher: create project from REST API
- python - 根据他人预测新产品的价值?
- dialogflow-es - processing multiple responses from user in dialogflow
- c++ - 尝试将文本文件加载到动态分配的二维数组中时出现“分段错误”错误
- r - 如何重新排序具有特定因子顺序的 ggplot 对象
- kubernetes - 如何生成 cert.pem 和 key.pem 以部署在带有 helm 的 kubernetes 集群中?
- javascript - JavaScript; validateBinaryTree 函数在节点上给出值错误
- directx - 在 RWByteAddressBuffer 上多次调用 InterlockedAdd 会产生意想不到的结果(在 NVidia 上)
- node.js - 无法使用 Node js 在 AWS lambda 函数中将视频文件转换为音频文件