游乐游手机版
首页/AI教程/文章详情

SLS机器学习批量时序异常检测最佳实践指南

时间:2026-08-15 14:33
0 文章系列链接 SLS机器学习介绍(01):时序统计建模SLS机器学习介绍(02):时序聚类建模SLS机器学习介绍(03):时序异常检测建模SLS机器学习介绍(04):规则模式挖掘SLS机器学习介绍(05):时间序列预测 一眼看尽上亿日志-SLS智能聚类(LogReduce)发布SLS机器学习最佳

0.文章系列链接

SLS机器学习介绍(01):时序统计建模SLS机器学习介绍(02):时序聚类建模SLS机器学习介绍(03):时序异常检测建模SLS机器学习介绍(04):规则模式挖掘SLS机器学习介绍(05):时间序列预测 一眼看尽上亿日志-SLS智能聚类(LogReduce)发布SLS机器学习最佳实战:时序异常检测和报警SLS机器学习最佳实战:时序预测SLS机器学习最佳实战:日志聚类 异常告警

1. 高频检测场景

1.1 场景一

当面对一个包含 N 台机器、每台机器挂载 M 个时序指标(例如 CPU、内存、IO、网络流量等)的超大规模集群时,如果依然使用传统的逐条时序曲线建模方式,不仅会产生大量重复 SQL 语句,还会显著增加平台计算资源消耗,给系统带来较大压力。那么,在这种海量时序数据异常检测场景下,如何通过更高效的 SQL 方案实现批量建模与分析,满足复杂业务需求,就成为关键问题。

1.2 场景二

在对系统中的 N 条时序曲线完成异常检测之后,如何快速识别并定位:究竟哪些时序曲线出现了异常?这也是批量时序异常检测中非常常见且重要的需求。

2. 平台实验

2.1 解决一

针对场景一中的问题,我们先给出对应的数据约束。相关数据在日志服务的 LogStore 中按照如下结构进行存储:

timestamp : unix_time_stampmachine: name1metricName: cpu0metricValue: 50---timestamp : unix_time_stampmachine: name1metricName: cpu1metricValue: 50---timestamp : unix_time_stampmachine: name1metricName: memmetricValue: 50---timestamp : unix_time_stampmachine: name2metricName: memmetricValue: 60

在上述 LogStore 中,我们首先提取 N 个指标对应的时序信息:

* | select timestamp - timestamp % 60 as time, machine, metricName, a vg(metricValue) from log group by time, machine, metricName

接着,基于以上结果执行批量时序异常检测算法,并得到 N 个指标各自的检测结果:

* | select machine, metricName, ts_predicate_arma(time, value, 5, 1, 1) as res from( selecttimestamp - timestamp % 60 as time, machine, metricName, a vg(metricValue) as valuefrom log group by time, machine, metricName )group by machine, metricName

通过上述 SQL,我们得到的结果结构如下:

| machine | metricName | [[time, src, pred, upper, lower, prob]] || ------- | ---------- | --------------------------------------- |

针对该结果,可以进一步借助矩阵转置操作,将输出转换为如下格式,具体 SQL 如下:

* | select machine, metricName, res[1] as ts, res[2] as ds, res[3] as preds, res[4] as uppers, res[5] as lowers, res[6] as probsfrom ( select machine, metricName, array_transpose(ts_predicate_arma(time, value, 5, 1, 1)) as res from( selecttimestamp - timestamp % 60 as time, machine, metricName, a vg(metricValue) as valuefrom log group by time, machine, metricName )group by machine, metricName )

完成二维数组转换后,我们再将每一行内容进行拆分,最终得到符合预期的字段结构,具体格式如下:

| machine | metricName | ts | ds | preds | uppers | lowers | probs || ------- | ---------- | -- | -- | ----- | ------ | ------ | ----- |

2.2 解决二

完成批量检测后,如果希望快速、精准地筛选出包含特定异常类型的时序结果,该如何处理?此时就可以使用日志服务平台提供的异常检测结果过滤能力。

select ts_anomaly_filter(lineName, ts, ds, preds, probs, nWatch, anomalyType)

其中,针对 anomalyType 的说明如下:

0:表示关注全部异常1:表示关注上升沿异常-1:表示下降沿异常

其中,针对 nWatch 的说明如下:

表示从实际时序数据最后一个有效观测点开始,向最近的 nWatch 个观测点范围内进行关注和判断。

具体使用方式如下所示:

* | select ts_anomaly_filter(lineName, ts, ds, preds, probs, cast(5 as bigint), cast(1 as bigint))from( select concat(machine, '-', metricName) as lineName, res[1] as ts, res[2] as ds, res[3] as preds, res[4] as uppers, res[5] as lowers, res[6] as probsfrom ( select machine, metricName, array_transpose(ts_predicate_arma(time, value, 5, 1, 1)) as res from( selecttimestamp - timestamp % 60 as time, machine, metricName, a vg(metricValue) as valuefrom log group by time, machine, metricName )group by machine, metricName ) )

通过上述结果,我们拿到的是一个 Row 类型的数据。此时可以使用如下方式,将其具体结构进一步提取出来:

* | select res.name, res.ts, res.ds, res.preds, res.probs from( select ts_anomaly_filter(lineName, ts, ds, preds, probs, cast(5 as bigint), cast(1 as bigint)) as resfrom( select concat(machine, '-', metricName) as lineName, res[1] as ts, res[2] as ds, res[3] as preds, res[4] as uppers, res[5] as lowers, res[6] as probsfrom ( select machine, metricName, array_transpose(ts_predicate_arma(time, value, 5, 1, 1)) as res from( selecttimestamp - timestamp % 60 as time, machine, metricName, a vg(metricValue) as valuefrom log group by time, machine, metricName )group by machine, metricName ) ) )

通过以上操作,就可以对批量时序异常检测结果进行高效过滤,帮助用户更便捷地完成异常识别与批量告警配置。

3.硬广时间

3.1 日志进阶

这里汇集了日志服务各类功能演示,包括日志服务整体介绍以及多种 Demo 示例。
12

想了解更多日志服务进阶内容,可以参考:日志服务学习路径。

3.2 联系我们

如果需要纠错、完善帮助文档,或参与最佳实践内容贡献,请联系:悟冥
问题咨询请加入钉钉群:

477c776b40abf1fdd879c8b73334c5a0b7276069_jpeg

来源:https://developer.aliyun.com/article/706882
上一篇AI测试提效:UI自动化样式Bug视觉断言与多浏览器适配方案 下一篇扩散模型自引导新范式SSG:直接交换Token提升生成能力
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
CAD零基础入门教程:坐标输入、图层管理与基础绘图命令
AI教程 · 2026-09-01

CAD零基础入门教程:坐标输入、图层管理与基础绘图命令

本文面向CAD零基础学习者,系统讲解坐标输入、图层管理与基础绘图命令的核心用法。通过分步实操与常见问题排查,帮助新手建立精确绘图习惯,掌握规范出图的基础能力。

CAD从入门到项目交付:绘图、标注、图块与实战工作流
AI教程 · 2026-09-01

CAD从入门到项目交付:绘图、标注、图块与实战工作流

掌握CAD的核心在于建立“画得准、标得清、复用快、交付稳”的工作流。本文提供从环境设置、高频命令组合、标注规范、图块标准化到项目分阶段交付的完整路径,帮助初学者避免常见返工陷阱,独立完成可检查、可复用、可打印的工程图纸。

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤
AI教程 · 2026-09-01

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤

本文详细解析 Claude Code 登录前的账号类型区分方法,涵盖个人订阅、Teams 席位与企业 Enterprise 席位的授权路径差异。提供终端登录命令、环境变量排查及常见异常处理步骤,帮助用户快速完成正确授权并避免登录路径混淆。

Claude Code 文件修改前的权限模式配置与命令审批指南
AI教程 · 2026-09-01

Claude Code 文件修改前的权限模式配置与命令审批指南

本文详细介绍Claude Code在修改文件前的权限模式配置方法,包括defaultMode可选值、permissions allow与deny规则设置、多层级配置文件管理以及 status验证技巧,帮助开发者安全高效地使用AI编程助手。

Claude Code接入VS Code后先测扩展和终端命令
AI教程 · 2026-09-01

Claude Code接入VS Code后先测扩展和终端命令

在VS Code中接入Claude Code后,建议优先验证扩展面板与集成终端两条入口。本文提供标准检查顺序、关键命令与常见故障排查路径,帮助你快速确认环境就绪,避免后续开发受阻。