执行群体分析
Elastic Stack Serverless
群体分析是一种通过比较指定群体中实体或事件的行为来检测异常的方法。在这种方法中,机器学习分析会创建一个配置文件,描述指定时间段内用户、机器或其他实体的“典型”行为。当实体的行为偏离群体行为时,则认为该实体是异常的,表明与群体中的其余部分相比存在异常活动。
当组内的行为通常是同质的时,这种类型的分析最有效,从而可以识别不寻常的模式。但是,当群体成员表现出截然不同的行为时,它的用处较小。在这种情况下,您可以将数据分段为具有相似行为的组,并为每个组运行单独的作业。可以通过在数据源中使用查询过滤器或应用partition_field_name
将分析拆分到不同的组中来完成此操作。
群体分析资源效率高且可很好地扩展,能够分析由成千上万甚至数百万个实体组成的群体,且资源占用量低于单独分析每个序列。
- 当组内的行为大多是同质的时,使用群体分析,因为它有助于有效地识别异常模式。
- 在处理大规模数据集时,利用群体分析。
- 当群体成员表现出截然不同的行为时,避免使用群体分析,因为它可能无效。
在 Kibana 中,导航至 作业。要打开 作业,请在主菜单中找到 机器学习 > 异常检测,或使用全局搜索字段。
单击 创建作业,选择要分析的数据视图。
从列表中选择 群体 向导。
选择一个群体字段 - 在本示例中为
clientip
字段 - 以及您要用于分析的指标 - 在本示例中为Mean(bytes)
。单击 下一步。
提供作业 ID 并单击 下一步。
如果验证成功,请单击 下一步 以查看作业创建的摘要。
单击 创建作业。
API 示例
要指定群体,请使用 over_field_name
属性。例如
PUT _ml/anomaly_detectors/population
{
"description" : "Population analysis",
"analysis_config" : {
"bucket_span":"15m",
"influencers": [
"clientip"
],
"detectors": [
{
"function": "mean",
"field_name": "bytes",
"over_field_name": "clientip"
}
]
},
"data_description" : {
"time_field":"timestamp",
"time_format": "epoch_ms"
}
}
- 此
over_field_name
属性表示,每个客户端(由其 IP 地址标识)的指标是相对于每个桶中的其他客户端进行分析的。
使用 Kibana 中的 异常资源管理器 来查看分析结果

结果通常非常稀疏。所选时间段内可能只有几个数据点。当您有许多实体并且特定实体的数据是零星的或稀疏的时,群体分析特别有用。如果单击时间线或泳道中的某个部分,您可以看到有关异常的更多详细信息

在此示例中,客户端 IP 地址 167.145.234.154
在所示的日期和时间收到了大量字节。此事件是异常的,因为平均值比群体的预期行为高四倍。