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_stamp
machine: name1
metricName: cpu0
metricValue: 50
---
timestamp : unix_time_stamp
machine: name1
metricName: cpu1
metricValue: 50
---
timestamp : unix_time_stamp
machine: name1
metricName: mem
metricValue: 50
---
timestamp : unix_time_stamp
machine: name2
metricName: mem
metricValue: 60
在上述的LogStore中我们先获取N个指标的时序信息:
* | select timestamp - timestamp % 60 as time, machine, metricName, avg(metricValue) from log group by time, machine, metricName
现在我们针对上述结果做批量的时序异常检测算法,并得到N个指标的检测结果:
* |
select machine, metricName, ts_predicate_aram(time, value, 5, 1, 1) as res from ( selecttimestamp - timestamp % 60 as time, machine, metricName, avg(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 probs
from ( select machine, metricName, array_transpose(ts_predicate_aram(time, value, 5, 1, 1)) as res from ( selecttimestamp - timestamp % 60 as time, machine, metricName, avg(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 probs
from ( select machine, metricName, array_transpose(ts_predicate_aram(time, value, 5, 1, 1)) as res from ( selecttimestamp - timestamp % 60 as time, machine, metricName, avg(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_aram(time, value, 5, 1, 1)) as res from ( selecttimestamp - timestamp % 60 as time, machine, metricName, avg(metricValue) as valuefrom log group by time, machine, metricName )group by machine, metricName ) ) )
通过上述操作,就可以实现对批量异常检测的结果进行过滤处理操作,帮助用户更好的批量设置告警。
3.硬广时间
3.1 日志进阶
这里是日志服务的各种功能的演示 日志服务整体介绍,各种Demo
原文链接
本文为云栖社区原创内容,未经允许不得转载。
SLS机器学习最佳实战:批量时序异常检测相关推荐
- SLS机器学习最佳实战:日志聚类+异常告警
0.文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 SLS机器 ...
- MATLAB算法实战应用案例精讲-【数据分析】时序异常检测(附实战应用案例)
目录 前言 算法原理 算法思想 时序异常检测方法 1.统计方法 2.预测方法+机器学习 <
- 基于机器学习的UEBA在账号异常检测中的应用
UEBA UEBA是一种采用高级数据分析方法.面向用户和实体网络行为,进行异常检测和调查的技术,也是安全智能分析切入点. U:表示用户(User),UEBA不是一般的安全分析,而是以分析用户活动为首要 ...
- 【时间序列异常检测】时序异常检测综述整理(2020-2021)
转载:宅码 最近阅读几篇异常检测综述,这里整理分享给大家,推荐阅读:5星.不足之处,还望批评指正. 赵越博士的异常检测库Python Outlier Detection (PyOD) [1]写的很好, ...
- KDD Cup 2021 时序异常检测总结!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 方向:时序异常检测,来源:Coggle 赛题描述 KDD Cup 202 ...
- 6种时序异常检测思路总结!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 内容:异常检测,来源:Coggle数据科学 时序异常检测并不困难,如果你 ...
- cnn 一维时序数据_蚂蚁集团智能监控的时序异常检测:基于 CNN 神经网络的异常检测...
1 背景在蚂蚁集团智能监控领域,时序异常检测是极重要一环,异常检测落地中,业务方参考业界标准输出 Metrics 指标数据,监控不同业务.应用.接口.集群的各项指标,包含 Metrics 指标(总量. ...
- 时序异常检测算法汇总
时序异常检测算法 一.ADTK无监督异常检测方法汇总: ThresholdAD将每个时间序列值与给定阈值进行比较 QuantileAD将每个时间序列值与历史分位数进行比较 InterQuartileR ...
- 【时序异常检测翻译】1.DeepAnT: A Deep Learning Approach for Unsupervised Anomaly Detection in Time Series
DeepAnT:一种用于时间序列中无监督异常检测的深度学习方法 摘要 传统的基于距离和密度的异常检测技术无法检测流数据中常见的周期性和季节性点异常,在当前物联网时代,时间序列异常检测存在很大差距.为了 ...
最新文章
- FORM 中的颜色 Visual Attribute
- RocketMQ生产者流程篇
- 网络招聘“草莽时代”该结束了
- 碳达峰、碳中和带来的机遇和挑战研究报告
- 面试基础(1)——面向对象/get,post的区别
- VB判断指定的WORD文档是否被打开
- display:none与visible:hidden的区别 ?
- c++ makefile和cmake
- 计算机桌面工具栏出现闪烁,电脑任务栏一直闪怎么办
- 学生管理系统数据库设计
- 从0到1打造自己的网络电话系统
- 大数据平台整体架构设计方案(PPT)
- JAVA拓展新的数据库,SqlFaker:轻量级、易拓展的Java数据库智能填充开源库
- Python 3个小练习
- 成语秀才小程序部署问题总结
- 聊一聊Java中的线程中断
- 三极管PNP NPN 的判别
- Powershell / windows终端 无法加载文件 因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170
- 2022第二届中国ESG与可持续发展国际峰会将于11月17日-18日在上海举行
- 两行轨道根数norad_极客历史记录的本周:NORAD跟踪圣诞老人,第一个HTTP测试,巴贝奇诞辰...
热门文章
- 武汉船舶职业技术学院计算机分数线,武汉船舶职业技术学院录取分数线2021是多少分(附历年录取分数线)...
- java解析excel文件_1.3.1 python解析excel格式文件
- html5 webrtc fir 请求关键帧_中信建投官网强调认可我们的投资理念的股民朋友请求 CTRL D 收藏、锁定本直播地址...
- c++ 单例模式_Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比
- java ajax无权限跳转_如何在ajax权限判断后跳转?
- android 日期对话框,Android日期选择器对话框DatePickerDialog使用详解
- 三国杀服务器改名 插图修改,《三国杀》大幅修改的武将——新旧两版,你更喜欢哪一位...
- presto联合查询mysql和ES_presto-mysql/elasticsearch6.0.0安装部署测试,异种数据源关联查询入门实践...
- 华为简易压缩算法python_Python(9) --实现一个简单的压缩软件/解压软件的功能
- python的界面文字翻译_一个把网站全英文转成中文的方法,让你轻松看懂python官网...