如何用Prometheus预测指标未来趋势并告警

最近一直在研究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笔:

请注意,您需要根据实际情况修改指标名称、时间范围和阈值等参数,以及告警的级别、摘要和描述等信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值