如何在普罗米修斯中使用预测 predict_linear

qin*_*ang 1 prometheus

我对普罗米修斯很陌生,

我正在尝试预测节点 1 和节点 2 上接下来 5 小时的 CPU 使用率。

我的代码是

'''

    predict_linear(cpu_usage[5m],5*3600)
Run Code Online (Sandbox Code Playgroud)

''' 由于 cpu_usage 包含两个节点,所以当我使用上面的等式时,我得到了两个我不想要的预测结果。

所以我通过添加'''来改进我的代码

    sum(predict_linear(cpu_usage[5m],5*3600)).
Run Code Online (Sandbox Code Playgroud)

''' 我不确定这是不是正确的方法。我阅读了文档,它提到 predic_linear 仅适用于仪表。

谢谢你们,

Mic*_*bez 6

主动监控并不真正适用于 CPU。它更适合用于系统资源耗尽,例如内存或驱动器空间。100% cpu 使用率没有任何问题,只要这并不意味着您的应用程序存在性能问题。

如果您确实有一些基准测试表明 cpu 不应达到 100%,那么它是基于反应性的:如果 cpu 在给定的时间内停留在 100% cpu,您希望收到警报。

关于你的问题,基于 5 分钟的数据预测未来 5 小时的预测将非常嘈杂。应用程序在几分钟(甚至几十分钟)内增加消耗的情况并不少见。此外,即使应用程序内存使用的形状是一个完美的步骤,该predic_linear()函数使用线性回归 a 将计算步骤底部和顶部(在某个点)的平均速率。

如果插值到 5 小时,这个小消耗率会很快加起来。例如,如果您的节点配置为中等大小 (4GiB),并且您在 t0 时的内存消耗接近 0,则未检测到内存中断的最大速率将为4*Gi/(5*60)=~13MB/min。如果您对此发出警报,则会有很多误报。

我发现它有助于:

  • 增加测量数据的范围(经验法则 ~ 20% 或 25% 的插值时间,因此 5 小时预测为 1 小时)
  • 调整for规则中的条款以减少误报
  • 添加对电流消耗的限制:如果电流水平低于 60%,则检测到的中断很可能不是真实的

最后,你的问题有很多点:

  • 计算 cpu 的总和:您宁愿计算平均值,这可以为您提供整体 cpu 使用率 - 我从未发现这特别有用,因为应用程序可能会卡在 cpu 上并且受 cpu 限制
  • 两个预测结果:我希望这是你想要的,每个cpu都应该单独发出警报
  • predict_linear 仅用于仪表:它可以应用于计数器,但如本答案开头所述,它更适合用于资源耗尽,并且您不会使用计数器测量资源。