文章部分内容来源于公众号——布博士(擎创科技资深产品专家)
前言:
说到Prometheus,很多人第一印象可能是希腊神话中泰坦火神的形象, 但在我们程序员的眼里,Prometheus 是一个用GO编写的系统监控和警报工具包,由 Soundcloud 构建,并于 2016 年作为继 Kubernetes 之后的第二个托管项目加入云原生计算基金会(CNCF)。
在Prometheus官网的封面中这样写道:From metrics to insight,从指标到洞察力,通过指标去洞察你的系统,为我们的系统提供指标收集和监控的开源解决方案。也就是说,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笔:
请注意,您需要根据实际情况修改指标名称、时间范围和阈值等参数,以及告警的级别、摘要和描述等信息。
本次分享先到这儿了,对于Prometheus有什么想了解的,欢迎大家评论区留言交流互动,下期我们再见~
擎创科技,Gartner连续推荐的AIOps领域标杆供应商。公司致力于协助企业客户提升对运维数据的洞见能力,优化运维效率,充分体现科技运维对业务运营的影响力。
行业龙头客户的共同选择
了解更多运维干货与技术分享
可以右上角一键关注
我们是深耕智能运维领域近十年的
连续多年获Gartner推荐的AIOps标杆供应商
下期我们不见不散