如何在实际场景中使用异常检测?阿里云Prometheus智能检测算子来了

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
可观测可视化 Grafana 版,10个用户账号 1个月
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
简介: 异常检测作为智能运维(AIOps)系统中基础且重要功能,其旨在通过算法自动地发现 KPI 时间序列数据中的异常波动,为后续的告警、自动止损、根因分析等提供决策依据。那么,我们该如何在实际场景中使用异常检测呢,而异常检测又是什么,今天我们就进行一次深入讲解。

作者|梵登、白玙

审核&校对:白玙

编辑&排版:雯燕


背景


异常检测作为智能运维(AIOps)系统中基础且重要功能,其旨在通过算法自动地发现 KPI 时间序列数据中的异常波动,为后续的告警、自动止损、根因分析等提供决策依据。那么,我们该如何在实际场景中使用异常检测呢,而异常检测又是什么,今天我们就进行一次深入讲解。


什么是异常检测?


在一切开始前,我们首先需要了解什么是异常检测。异常检测是指从时间序列或者事件日志中,去识别出不正常的事件、现象等。我们这里讲的异常检测特指时间序列的异常检测。通过对时间序列的值大小,曲线形态等进行综合判定,可以发现曲线异常点。异常的表现一般是指时间序列发生了不符合预期的上升、下降或者波动。


举例来说:某台机器的内存使用率指标一直在 40% 左右的水位波动, 突然飙升至 100%;某个 Redis 数据库的连接数正常水平一直在 100 数量左右, 突然发生了大规模的下跌至 0 的现象;某个业务的在线人数在 10 万左右波动,突然下跌到了 5 万等等。


什么是时间序列?


时间序列是指一组按照时间发生先后顺序进行排列的数据点序列,通常一组时间序列的时间间隔为一恒定值(如 1 分钟、5 分钟)。


当前开源 Prometheus 是如何做异常检测的?


目前开源版本的 Prometheus 检测能力还是基于设定阈值规则方式进行,而这种依赖阈值设定的方式就引出了以下问题。


常见问题


问题 1:面对数以万计的指标数量,如何快速又合理的完成检测配置?


由于不同类型指标的含义差别大,对应设定的合理阈值也不太一样。哪怕是同一种类型指标,由于业务状态不一样,往往不能用相同阈值。因此,在配置阈值时,运维人员需要根据对应的业务情况去配置自认为合理的阈值。由于运维人员认知水平和工作经验存在差异,因此不同人员配置的阈值也存在差别。其次,很多指标没有明确合理的范围定义,这导致很多阈值配置都是“拍脑袋”确定的,随机性比较强。


举例来说:某在线人数指标, 必须仔细观察分析历史指标曲线的数值分布和变化趋势,才能设置出合理的阈值。


问题 2:随着业务的演化,如何进行检测规则的维护?


对于相对稳定的业务,业务指标长期处于稳定状态,这种情况下配置的阈值可以发挥比较长时间作用。但对于时刻变化的业务, 伴随业务的不断演化,指标的水位和走势也是在不断变化。这些变化很容易导致一开始设定的阈值检测,经过一段时间则不太满足检测现状。这时候则需要运维专家定期核查检测阈值是否还符合当前检测需求,对不合理的配置进行维护与修改。因此,静态阈值方式存在着维护成本高的问题。


举例来说:某 IO 吞吐量一开始稳定在 1 万的量值附近波动,一开始设定了检测阈值为超过 2 万则告警。但随着业务发展,IO 吞吐量已稳定在 2.5 万左右,这时候一开始设定的阈值就导致了源源不断的告警叨扰。


问题 3:数据质量不佳如何解决?


数据质量不佳表现为几种具体现象:采集延迟大、数据缺失值多、数据毛刺点比较多(反应在曲线上则是不够平滑)。对于前面俩种, 更多的是从采集、聚合侧进行针对性优化。ARMS-Prometheus 持续在采集能力进行优化。而对于数据毛刺点很多的数据质量问题,静态阈值方式无法有效的规避。而在 ARMS- 托管版 Prometheus 的智能算子中, 我们则针对多毛刺点进行了有效的识别,保证了毛刺点不会形成无效告警, 减少用户侧/运维侧形成叨扰。


阿里云 Prometheus 监控是怎么解决这些问题


面对以上问题,阿里云 Prometheus 监控的检测配置能力除了支持原生的设定阈值检测方式,全面新增支持模板设定检测阈值方式与智能检测算子方式


业务价值 1:高效高质量的告警配置


(1)针对明确的应用场景配置检测规则,阿里云 Prometheus 监控提供成熟的告警配置模板化,用户无需人工设定阈值, 只需要选择对应的模版即可。例如:机器指标场景下, 配置“机器指标的 cpu 使用率 >80%”的模板。模板的方式解决了配置中明确异常且业务比较稳定的应用场景痛点。


(2)针对不明确的指标场景或不好设定的业务指标场景,则推荐使用智能检测算子功能。


例如需要对某在线人数指标设定阈值, 这时需要花费很长的时间观察历史曲线状态才能配置出合理的阈值。这种场景下用户可以直接选择智能检测算子。


业务价值 2:自适应追踪业务变化,大大降低检测阈值维护成本


阿里云 Prometheus 监控的智能检测算子功能,通过设定参考历史数据长度的参数,模型可以自适应的追踪指标趋势的变化,无需人工定期去审查配置规则。


业务价值 3: 对于质量不佳,缺失值/毛刺点过多的指标也可以实现智能检测


在智能检测算子功能中, 如果历史数据出现了缺失,算法可以线性插值,多项式插值等多种方式,自动填补缺失值。对于不平滑的指标曲线检测,智能检测算子也自适应的选择针对该场景的最优模型进行检测,保证整体的检测效果。


如何应用在具体业务场景里


水位突增/突降型指标:某业务的 qps 指标


1.png


在业务开始设定阈值时, 通过观察很有可能设定阈值不超过 150。但随着业务迭代,qps 指标也会发生各种各样的变化。从指标上则表现为:出现阶段性的突增至某个值,然后平稳的状态。这种情况下,设定的静态阈值很难持续满足检测需求。另外一方面, 稳定情况也会出现突发的下跌, 只设置上限的静态阈值是检测出这种下跌情况的。这种情形下, 智能检测算子则可以自适应的跟踪业务水平的变化,智能识别业务的突增或突降。


周期性的指标:


2.png


在指标画像模块,如果识别出当前的指标具有一定的周期,则会从中提取出对应的周期值、周期偏移值, 以及整体趋势曲线。在原始的时间序列去除周期性、趋势性后,利用残差进行异常检测。以上图的周期指标为例, 11.30 分左右的周期与其他周期出现明显差别。传统静态阈值很难去解这类场景下的检测问题, 而利用智能检测算子,则可以识别出该种异常。


趋势破坏型的指标:


5ad8bed7679d4c62a69497e840c7e281.png


此外,还有一种常见类型的指标异常是,在某一阶段内, 指标一直呈现上升(或者下降)趋势。在某一个节点出现突发性的趋势破坏,局部呈现了和整体趋势不一样。这种异常类型也是很常见的,但是静态阈值很难设定来解决这种情形。而智能检测算子则针对这种类型可以进行准确了的识别异常。


最佳实践


阿里云Prometheus监控内使用流程


目前阿里云 Prometheus 监控已经支持智能检测算子功能,只需登陆 ARMS-Prometheus/grafana,输入对应的 PromQL 即可。

算子定义


"anomaly_detect": {
 Name: anomaly_detect",
ArgTypes: []ValueType{ValueTypeMatrix, ValueTypeScalar},
ReturnType: ValueTypeVector,
},
输入:指标的时间序列,类型为range vector;检测参数,使用默认的3即可
输出:异常返回1, 正常返回0

使用 case:


anomaly_detect(node_memory_free_bytes[20m],3)


  1. 输入的必须是 range vector,因此需要在指标名称后增加[180m], 时间范围默认选择 180m,参数默认选择 3
  2. 如果先进行了其他聚合函数操作,则需要[180m:],使之变为 range vector,如下:anomaly_detect(sum(node_memory_free_bytes)[180m:],3)


使用示例:


step 1: 登陆到 ARMS-Prometheus 或 Grafana 中选择对应的 Prometheus 数据源


2aae5136e2cf425fb0e8457d8c0848ca.png


选择对应的数据源:


8ac4135c304f4483a36ffbcb6260a0cf.png


step 2: 选择指标, 并查看


25db7449214a4a0db087f773596f9e25.png


step 3: 输入异常检测算子


d25dbcaa852147a9a5a32c18a4b0d448.png


关于 Prometheus- 智能检测算子


阿里云 Prometheus 监控智能检测算子,总结业界数十款领先的算法方案实践设计而成。针对常见的指标类型建立了指标画像,并自适应的选择最佳模型去进行检测计算。每一条指标数据输入模型后, 模型首先会对当前的指标建立指标画像,包括平稳性,抖动性,趋势性,周期性,是否为特殊节假日/活动等。根据这些画像特征构建之后, 模型自适应选择最优一种或者多种算法组合来解当前的指标检测问题,保证了整体效果最优。目前已经支持的功能包括:突增检测、毛刺检测、周期识别(识别周期性、周期的偏移)。


通过阿里云 Prometheus 监控中集成智能检测算子, 我们希望给用户可以提供开箱即用、持续迭代更新的智能检测服务。目前用户可以在阿里云 Prometheus 监控中查看并使用智能检测算子,而基于 ARMS 的原生配置智能检测告警功能和 Grafana 动态展示将在近期推出。


👇点击这里,立即接入 Prometheus 监控


7c649f7025394dee91d12c0a80def576.png


往期推荐:


1)系统架构面临的三大挑战,看 Kubernetes 监控如何解决?

2)面对疾风吧,如何搭建高协同的精准告警系统



了解更多相关信息,请钉钉扫描下方二维码或搜索钉钉群号(35922870)加入阿里云原生资讯交流群!获取更多相关资讯!

d4fa91e24f194be4a00962fcc42f7948.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
8天前
|
弹性计算 运维
阿里云操作系统智能助手OS Copilot实验测评报告
**OS Copilot 产品体验与功能反馈摘要** 运维人员发现OS Copilot易上手,文档清晰,助其高效排查故障(8/10分)。愿意推荐并参与开源开发。亮点在于知识问答,能快速筛选答案。相较于竞品,优点是新手友好、文档清晰,但功能扩展性待增强。期望增加系统错误排查与解决方案,并集成ECS等,以优化系统安装流程。
阿里云操作系统智能助手OS Copilot实验测评报告
|
11天前
|
弹性计算 运维 开发者
阿里云操作系统智能助手OS Copilot产品测评报告
阿里云的OS Copilot是面向开发者和运维的智能助手,提升云上应用的构建和管理效率,支持Linux、Windows等操作系统。它具有智能化、自动化特点,帮助进行系统管理和故障排查。用户反馈上手简单,文档清晰,但在高级功能和特定场景支持上还有待加强。用户对其辅助命令执行功能赞赏有加,期望能支持更多操作系统和提供系统级错误排查工具。与ECS、Workbench等集成可提升管理与开发效率。适合云基础设施新手和前端开发者,但在复杂任务中可能需要改进。
133 5
阿里云操作系统智能助手OS Copilot产品测评报告
|
8天前
|
弹性计算 Prometheus 监控
如何从自建开源 Prometheus 迁移到阿里云托管 Prometheus 服务
阿里云可观测监控 Prometheus 版提供高性能、高可用、全托管的监控服务,对接开源生态,支持 Kubernetes、ECS 等场景,解决了自建 Prometheus+Thanos 高成本、运维复杂的问题。本文讨论在各个典型场景下的迁移方案。
10264 13
|
4天前
|
Cloud Native 关系型数据库 新能源
|
7天前
|
弹性计算 运维 自然语言处理
阿里云OS Copilot测评:重塑Linux运维与开发体验的智能革命
阿里云OS Copilot巧妙地将大语言模型的自然语言处理能力与操作系统团队的深厚经验相结合,支持自然语言问答、辅助命令执行等功能,为Linux用户带来了前所未有的智能运维与开发体验。
|
12天前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
OS Copilot是针对Linux的智能助手,助力学习、运维及编程。用户界面直观,自然语言交互方便新手。官方文档详尽,但初次配置略复杂,适合学生和开发者。在提高代码编写和调试效率、系统学习上得分高,功能亮点包括代码生成、问答和命令执行。用户期待更多操作系统支持、自动错误分析和系统排查功能。
166 3
|
13天前
|
自然语言处理 监控 搜索推荐
阿里云百炼知识检索应用评测:搭建个人/企业专属智能问答助手
阿里云百炼知识检索应用评测:搭建个人/企业专属智能问答助手
|
14天前
|
弹性计算 运维 监控
阿里云操作系统智能助手OS Copilot评测报告
**摘要:** 计算机学生试用阿里云OS Copilot,认为其对编程和命令执行辅助强大,帮助评分9分,但新手上手有一定难度。期待开源并参与开发,希望增加可视化界面及更多系统支持,优化新手体验。已体验知识问答、辅助编程和命令执行,尤喜后者,与百度文心快码相比,OS Copilot操作复杂些。期望功能扩展包括多操作系统支持、错误分析及更多集成场景,如与ACK、ECS配合。
126 1
|
10天前
|
弹性计算 Java 关系型数据库
|
15天前
|
弹性计算 运维
阿里云操作系统智能助手OS Copilot的实验测评报告
OS Copilot 产品体验摘要 用户角色与场景:一位计算机学生使用辅助学习和解决问题,特别是通过代码解释功能加深理解。 易用性与文档:初者可能会觉得有些细节不明确。 帮助程度:用户给予极高评价,对学习帮助大,评分10分,快速定位和解决代码问题,提升学习效率。 推荐与参与:用户愿意推荐给他人。 功能体验:用户尝试了所有功能,对知识问答、辅助编程和命令执行特别感兴趣,尤其是命令执行帮助大。 对比其他产品:OS Copilot优点是便捷、准确。 期望功能:用户希望增加自动报错分析和系统错误排查。 联动体验:用户期待,以实现更全面的工具集。 总结:整体体验积极,用户看好其潜力,期待改进和未来联动。

相关产品

  • 可观测监控 Prometheus 版