Prometheus 的预测能力
场景1:你的磁盘剩余空间一直在减少,并且降低的速度比较均匀,你希望知道大概多久之后达到阈值,并希望在某一个时刻报警出来。
场景2:你的 Pod 内存使用率一直升高,你希望知道大概多久之后会到达 Limit 值,并在一定时刻报警 出来,在被杀掉之前上去排查。
Prometheus 的 Deriv 和 Predict_Linear 方法可以满足这类需求, Promtheus 提供了基础的预测能 力,基于当前的变化速度,推测一段时间后的值。
以 mem_free 为例,最近一小时 的 free 值一直在下降。
mem_free仅为举例,实际内存可用以mem_available为准
deriv函数可以显示指标在一段时间的变化速度
predict_linear方法是预测基于这种速度,最后可以达到的值:
predict_linear(mem_free{instanceIP="100.75.155.55"}[1h], 2*3600)/1024/1024
你可以基于设置合理的报警规则,如小于 10 时报警:
rule: predict_linear(mem_free{instanceIP="100.75.155.55"}[1h], 2*3600)/1024/1024
<10
predict_linear 与 deriv 的关系: 含义上约等于如下表达式,不过 predict_linear 稍微准确一些。
deriv(mem_free{instanceIP="100.75.155.55"}[1h]) * 2 * 3600+
mem_free{instanceIP="100.75.155.55"}[1h]
如果你要基于 Metric做模型预测,可以参考下forecast-prometheus