3.5.16.3.Anomaly detection
创作人:张妙成
审稿人:胡征南
Elasticsearch 的 Anomaly detection 模块主要用于时序数据的异常检测、群体分析,根据既定模型,创建正常行为的标准基线来识别数据中的异常,通常是从 Elasticsearch 中提取数据进行分析,将异常结果展示在可视化的 Kibana 仪表盘中,用以解决一些基于规则或监控难以实时发现的问题。主要用途为分析过去和现在、预测未来。
一、基本概念简述
1. Jobs
Job 即一个异常检测作业,包含执行分析任务所需的配置信息和元数据,job 通过一个或多个 detector,将分析函数应用于数据中的指定字段,达到按照字段分析数据集的效果。
2.Datafeeds
Datafeed 可以理解成一种 pipline,例如,Datafeed 可以作为 Job 从 Elasticsearch 中选取数据集的规则,Datafeed 还可以在将数据发送到异常检测作业之前聚合数据(有一定限制)。
3.Buckets(桶)
Bucket 是 Elasticsearch 中的一个集合概念,例如聚合结果最终表现形式是 bucket 集合,在机器学习中,则使用 bucket 的概念将时序数据分成批次进行处理。指定时间窗口的数据集合即为一个 bucket,bucket 的大小即每个时间窗口的数据量的大小, 也就是每次给 ML job 输送的数据量的大小。
4. Influencers
Influencer 即为影响因素,是可能促成数据异常的信息的字段,Influencer 可以是数据中的任何字段。
5. Calendars and scheduled events
在日历中指定日期或时间段为预期事件,机器学习 Job 不会在该期间内产生异常。主要用于持续时间较短且很少发生的场景,定期发生的事件无需创建计划事件,机器学习会自动识别处理。
6.Custom rules
Custom rule 即自定义规则,主要用于控制与调整机器学习检测器的分析结果,例如只关心
CPU 大于70%的异常,则在无监督学习的异常检测分析中,CPU 在70%以下的异常中不会生产异常结果。自定义规则还可应用于白名单的设置,例如信任的 IP 等场景。
7.Model snapshots
Model snapshot 即模型快照,主要用于存储机器学习的数据模型。异常检测是通过正常的行为的基线来推断的,该基线是由数据模型完成的,为了保证高可用,每个 job 的数据模型快照都保存到 ES 机器的内部索引,默认每 3-4h 生成一次快照。
二、工作原理
外部时序数据或者存储在 ES 索引中的时序数据,在经过 ES 机器学习 job 分析之后可以获取异常信息、预测后续数据,最终在 Kibana 展示,如果不依赖 Kibana,也可以通过 API 查看分析结果,结果存储在 ES 索引(.ml-anomalies)中。
机器学习 job 获取数据之后进行无监督学习,生成数据模型,并存入 ES 的 .ml-state 索引中。默认 3~4h 会生成一个 model snapshot,存入该索引。机器学习 job 通过学习出的模型对数据进行分析,并将分析结果存入 ES 的 .ml-anomalies 索引中。ml 相关数据的存储如下图所示。其中 job 信息时存在 .ml-config 索引中,calendar 等信息存储在 .ml-meta 索引中。
《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.16. Machine learning ——3.5.16.3.Anomaly detection(2) https://developer.aliyun.com/article/1227224