predict_linear 是什么
predict_linear 对指定窗口的数据做线性回归,再把拟合出的直线外推到未来某一时刻,返回那一刻的预测值。经典用法是容量告警:不再等磁盘使用率真的到 90% 才报警,而是按当前趋势预测几天后会写满时提前介入。它把告警从「已经发生」前移到「预计将发生」,代价是对突发变化不敏感,因此适合作为辅助信号。
基本信息
| 适用函数 | predict_linear(v range-vector, t seconds) |
|---|---|
| 第一个参数 | 用于回归的历史窗口,常用 6 小时到 1 天 |
| 第二个参数 | 外推的未来秒数,例如 4 天写成 4*24*3600 |
| 返回含义 | 拟合直线在目标时刻的取值 |
典型使用场景
- 磁盘容量:预测根分区可用空间何时归零,提前安排扩容
- 连接池水位:按增长趋势预留调整时间
- 队列积压:预测积压清空或触顶的时间点
- 内存增长:判断缓慢泄漏是否会在发布周期内触顶
- 容量评审:季度容量评估时提供趋势外推依据
磁盘耗尽预测
磁盘耗尽预测
# 按 6 小时趋势预测 4 天后的可用空间(结果为负表示将写满)
predict_linear(node_filesystem_avail_bytes{mountpoint="/"}[6h], 4*24*3600) < 0
# 预测 8 小时后使用率是否会超过 90%
predict_linear(node_filesystem_avail_bytes{mountpoint="/"}[6h], 8*3600)
< node_filesystem_size_bytes{mountpoint="/"} * 0.1
# 对照:deriv 给出每秒变化速率,用于确认增长是否稳定
deriv(node_filesystem_avail_bytes{mountpoint="/"}[6h])参数与结果读法
| 项 | 说明 | 取值建议 |
|---|---|---|
| 回归窗口 | 参与拟合的历史区间 | 覆盖若干抓取周期与业务波动,常用 6h 或 1d |
| 外推时长 | 预测的未来秒数 | 与处置周期匹配,如备份或扩容需要多久 |
| 结果符号 | 预测时刻的指标值 | 负值或低于安全线的组合即是告警条件 |
| 拟合质量 | 线性假设是否成立 | 有周期性或阶跃时预测偏差大 |
告警条件建议写成「预测值低于安全线」而不是「预测值小于零」:留出处置与验证的时间余量,比精确到写满那一刻更实用。
与 deriv 配合判断:deriv 给出现时速度,predict_linear 给出未来结果;两者结论矛盾时通常说明窗口内数据有阶跃,需要先核对变更记录。