最近一直在研究Prometheus的整个生态系统,无论是从系统设计思想还是使用上,都发现了许多有趣的能力。今天我想着重介绍一下Prometheus的指标预测能力。在这里,我们将不再讨论如何采集和加工指标,并通过Alert Rule生成告警。因为后续我将陆续分享自己整理的Prometheus生态系统学习笔记,如下图所示,敬请期待:
predict_linear使用说明
在Prometheus中,预测方法predict_linear
是其中一个内置函数。其使用线性回归模型来预测指标的未来趋势。它可以基于历史数据来预测未来的值,并支持设置预测范围和置信度等参数。
在看到的几个国外用户案例中,将该方法用于 Alert Rule 预测某个指标在未来一段时间是否达到其额定规划并产生告警是非常普遍的应用。
从该算法的特性上来看,其适用于以下类型的指标:
- 具有线性趋势的指标,比如磁盘容量、业务交易量等典型指标。
- 对噪声敏感,因此在使用它时请确保数据质量良好。对于业务交易量这样的指标,由于基础设施、数据库、程序设计等原因常常会导致业务交易量异常产生告警,因此在预测时需要排除这些异常值,以保证未来一段时间内的预测结果不受异常值的干扰。
以下是predict_linear
函数的语法
其中:
v
:range-vector类型,表示用于预测的指标向量。t
:scalar类型,表示预测的时间范围(以秒为单位)。confidence
:scalar类型,表示置信度。默认值为0.95
。
以下是一个使用predict_linear
函数预测业务交易量指标的示例:
在此示例中,我们使用predict_linear
函数来预测名为orders_beijing
的job中business_transactions_total
指标的未来趋势。我们使用[180d]
范围向量来表示过去180天的历史数据,并将t
参数设置为1d
表示预测未来一天的值。我们还将confidence
参数设置为0.99
,以提高预测的置信度。
配置规则并生成告警
以下是在Prometheus中alert.rule.yml
中的配置示例,用于使用predict_linear
函数预测名为orders_beijing
的job中business_transactions_total
指标的未来趋势,如果指标在未来一天内达到阈值,则生成告警,在这里我们假设orders_beijing服务每天最大的可处理订单量为100000笔:
请注意,您需要根据实际情况修改指标名称、时间范围和阈值等参数,以及告警的级别、摘要和描述等信息。