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

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
云拨测,每月3000次拨测额度
简介: 异常检测作为智能运维(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

相关文章
|
11天前
|
存储 机器学习/深度学习 弹性计算
|
1天前
|
弹性计算 Java 关系型数据库
最佳实践:阿里云倚天ECS在千寻位置时空智能服务的规模化应用
当前,千寻已有上千台倚天ECS实例在支撑线上核心业务。
|
2天前
|
弹性计算 运维 Java
最佳实践:阿里云倚天ECS在千寻位置时空智能服务的规模化应用
阿里云、平头哥及安谋科技联合举办的飞天技术沙龙探讨了倚天Arm架构在业务创新中的应用。活动中,千寻位置运维专家分享了将核心业务迁移到倚天处理器ECS实例的成功案例,强调了倚天处理器的高能效比和降本增效优势。迁移过程涉及操作系统、CICD系统和监控系统的适配,以及业务系统的性能测试。目前,千寻已迁移了上千台ECS实例到倚天处理器,实现了成本和效率的显著提升。未来计划继续扩展倚天处理器在核心业务和K8S中的应用。
|
4天前
|
存储 Prometheus 运维
【阿里云云原生专栏】云原生下的可观测性:阿里云 ARMS 与 Prometheus 集成实践
【5月更文挑战第25天】阿里云ARMS与Prometheus集成,为云原生环境的可观测性提供强大解决方案。通过集成,二者能提供全面精准的应用监控,统一管理及高效告警,助力运维人员及时应对异常。集成示例代码展示配置方式,但需注意数据准确性、监控规划等问题。这种集成将在云原生时代发挥关键作用,不断进化以优化用户体验,推动业务稳定发展。
107 0
|
5天前
|
存储 机器学习/深度学习 弹性计算
【阿里云弹性计算】阿里云ECS实例选择指南:理解不同实例系列的适用场景
【5月更文挑战第24天】阿里云ECS实例系列包括计算优化型、内存优化型、存储优化型、GPU加速型和通用型,适用于不同场景。计算优化型适合计算密集型任务,内存优化型适用于内存数据库,存储优化型针对高I/O需求,GPU加速型用于图形处理和深度学习,通用型则平衡各类需求。选择时需考虑应用类型、性能需求、成本效益和可扩展性。提供的示例代码展示了如何使用阿里云CLI创建通用型实例。本文旨在帮助用户根据业务需求选择最适合的ECS实例。
27 1
|
5天前
|
人工智能 弹性计算 监控
【阿里云云原生专栏】阿里云云原生与AI结合:智能应用的快速构建与部署
【5月更文挑战第24天】阿里云融合云原生和AI技术,助力快速构建智能应用。弹性伸缩、CI/CD、微服务和自动化运维带来优势。通过需求分析、环境准备、数据处理、模型开发到服务部署,阿里云提供容器服务、函数计算、服务网格等工具,支持自动化测试和监控,实现一站式智能应用开发。示例代码展示创建ACK集群和部署AI模型服务过程。
271 1
|
12天前
|
人工智能 云计算
阿里云携手合作伙伴得云AI举办《AI赋能 · 智能革新沙龙》
阿里云与得云AI联合举办了《AI赋能·智能革新沙龙》,探讨云计算和AI前沿技术。
|
14天前
|
存储 缓存 安全
阿里云服务器实例规格选型参考,根据上云场景选择适合自己的实例规格
对于很多新手用户来说,在初次选择阿里云服务器实例规格的时候,面对众多实例规格往往不知道如何选择,因为云服务器实例规格不同,价格也不一样,本文通过一些常见的选型场景推荐,便于大家在选择云服务器实例规格时做个参考。
阿里云服务器实例规格选型参考,根据上云场景选择适合自己的实例规格
|
14天前
|
编解码 缓存 安全
阿里云目前活动内各云服务器实例规格适用场景与价格参考
目前阿里云的活动中,云服务器有多种不同实例规格可选,实例规格定义了实例的基本属性:CPU和内存(包括CPU型号、主频等),但是不同实例规格所适用的场景是不一样的,价格也有很大差别,有的用户初次选购阿里云服务器可能并不知道这些实例规格的具体适用场景,下面是小编整理汇总的2024年截止目前阿里云的活动中云服务器实例规格适用场景与活动价格,以供参考。
阿里云目前活动内各云服务器实例规格适用场景与价格参考
|
14天前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践

相关产品

  • 可观测监控 Prometheus 版