机器学习异常检测限制
编辑机器学习异常检测限制
编辑以下限制和已知问题适用于 Elastic 机器学习功能的 8.17.0 版本。 这些限制分为四类:
- 平台限制与托管 Elastic Stack 机器学习功能的平台相关。
- 配置限制适用于异常检测作业的配置过程。
- 操作限制会影响正在运行的异常检测作业的行为。
- Kibana 中的限制仅适用于通过用户界面管理的异常检测作业。
平台限制
编辑CPU 必须支持 SSE4.2
编辑机器学习使用流式单指令多数据扩展(SSE)4.2 指令,因此它只能在 CPU 支持 SSE4.2 的计算机上运行。 如果你在较旧的硬件上运行 Elasticsearch,则必须通过将 xpack.ml.enabled
设置为 false
来禁用机器学习。 请参阅 Elasticsearch 中的机器学习设置。
CPU 调度改进仅适用于 Linux 和 MacOS
编辑当同时运行许多机器学习作业且 CPU 资源不足时,必须优先考虑 JVM 性能,以便搜索和索引延迟保持在可接受的范围内。 为此,当 Linux 和 MacOS 环境中的 CPU 受限时,会降低本机分析进程的 CPU 调度优先级,以优先考虑 Elasticsearch JVM。 此改进不适用于 Windows 环境。
使用 CCS 的机器学习作业的许可证限制
编辑你必须拥有适当的许可证才能在通过跨集群搜索 (CCS) 访问的远程集群的数据集上启动机器学习作业。 有关不同订阅级别可用的功能的详细信息,请参阅 [订阅](https://elastic.ac.cn/subscriptions)页面。
配置限制
编辑词项聚合大小会影响数据分析
编辑默认情况下,terms
聚合返回前十个词项的存储桶。 你可以通过设置 size
参数来更改此默认行为。
如果将预聚合数据发送到作业进行分析,则必须确保正确配置 size
。 否则,某些数据可能不会被分析。
不支持脚本度量聚合
编辑不支持在数据源中使用 脚本度量聚合。 有关数据源中聚合的更多信息,请参阅 聚合数据以提高性能页面。
名为 "by"、"count" 或 "over" 的字段不能用于拆分数据
编辑你不能在作业的 by_field_name
或 over_field_name
属性中使用以下字段名称:by
;count
;over
。 当你在 Kibana 中创建高级作业时,此限制也适用于这些属性。
分析字段中的数组将转换为逗号分隔的字符串
编辑如果配置异常检测作业来分析可聚合字段(索引映射定义的一部分的字段),并且此字段包含数组,则该数组将转换为逗号分隔的连接字符串。 数组中的项按字母顺序排序,并删除重复项。 例如,数组 ["zebra", "dog", "cat", "alligator", "cat"]
变为 alligator,cat,dog,zebra
。 异常资源管理器图表不会显示该作业的任何结果,因为该字符串不存在于源数据中。 如果启用模型绘图,则“单个度量查看器”会显示结果。
如果数组字段不可聚合且从 _source
检索,则该数组也会转换为逗号分隔的连接列表。 但是,列表项不会按字母顺序排序,也不会删除重复项。 以上述示例为例,在这种情况下,逗号分隔的列表将为 zebra,dog,cat,alligator,cat
。
分析大型数组会导致长字符串,这可能需要更多的系统资源。 请考虑在数据源中使用查询来筛选数组的相关项。
无法在 Kibana 中创建冻结层数据的异常检测作业
编辑你无法通过 Kibana 中的作业向导在 冻结层数据上创建异常检测作业。 如果你要创建此类作业,请改用 API。
不支持的预测配置
编辑有一些限制会影响你创建预测的能力
- 你只能同时为每个异常检测作业生成三个预测。 你保留的预测数量没有限制。 当你创建新预测时,不会覆盖现有预测。 相反,它们会在过期时自动删除。
- 如果在异常检测作业中使用
over_field_name
属性(也就是说,它是一个群体作业),则无法创建预测。 -
如果在异常检测作业中使用以下任何分析函数,则无法创建预测
-
lat_long
-
rare
和freq_rare
-
time_of_day
和time_of_week
有关这些函数的更多信息,请参阅 函数参考。
-
异常检测在索引字段上表现更好
编辑异常检测作业会按用户定义的时间字段对所有数据进行排序,该字段经常被访问。 如果时间字段是 运行时字段,则在查询时计算字段值对性能的影响可能会显着降低作业速度。 运行异常检测作业时,请使用索引字段作为时间字段。
数据源中 Painless 脚本的弃用警告
编辑如果数据源包含使用已弃用语法的 Painless 脚本,则在预览或启动数据源时会显示弃用警告。 但是,无法批量检查所有数据源的弃用警告,因为运行所需的查询可能会是一个资源密集型过程。 因此,升级助手中不提供因已弃用的 Painless 语法而产生的任何弃用警告。
操作限制
编辑分类使用英语词典单词
编辑分类标识非结构化日志的静态部分,并将相似的消息分组在一起。 默认的分类分词器假定英语日志消息。 对于其他语言,你必须为作业定义不同的 categorization_analyzer
。
此外,用于影响分类过程的字典仅包含英语单词。 这意味着分类在英语中可能比在其他语言中效果更好。 将在未来版本中添加自定义字典的功能。
误导性高的缺失字段计数
编辑与机器学习作业关联的计数之一是 missing_field_count
,它表示缺少配置字段的记录数。
由于作业分析 JSON 数据,因此 missing_field_count
可能会产生误导。 由于数据的结构,可能会缺少字段,因此不会产生不良结果。
有关 missing_field_count
的更多信息,请参阅 获取异常检测作业统计信息 API。
安全集成
编辑启用 Elasticsearch 安全功能后,数据源会存储创建或更新数据源的用户的角色 在那时。 这意味着,如果用户在创建或更新数据源后其角色发生了更改,则数据源将继续运行而不发生更改。 但是,如果更改了与数据源存储的角色关联的权限,则会影响数据源。 有关更多信息,请参阅 数据源。
作业和数据源 API 的最大搜索大小
编辑在 6.6 及更高版本中,获取作业 API 和 获取作业统计信息 API 最多返回 10,000 个作业。 同样,获取数据源 API 和 获取数据源统计信息 API 最多返回 10,000 个数据源。
预测操作限制
编辑运行预测时可能需要考虑一些因素
- 预测与实时机器学习分析同时运行。 也就是说,生成预测时,机器学习分析不会停止。 但是,预测可能会对异常检测作业产生影响,尤其是在内存使用方面。 因此,只有当模型内存状态可接受时,预测才会运行。
- 创建预测时,异常检测作业必须处于打开状态。否则,会发生错误。
- 如果数据不足以生成任何有意义的预测,则会发生错误。一般来说,在数据分析的学习阶段早期创建的预测不太准确。
Kibana 中的限制
编辑浏览器中必须启用弹出窗口
编辑Kibana 中的机器学习功能使用弹出窗口。您必须配置您的 Web 浏览器,使其不阻止弹出窗口或为您的 Kibana URL 创建例外。
“异常浏览器”和“单指标查看器”的遗漏和限制
编辑在 Kibana 中,异常浏览器和单指标查看器图表不会显示以下情况的异常:
- 由于分类而产生的异常(如果未启用模型绘图),
- 如果数据馈送使用脚本字段且未启用模型绘图(定义指标字段的脚本除外),
- 如果数据馈送使用复合聚合,并且复合源不是
terms
和date_histogram
, - 如果您的数据馈送使用带有嵌套
terms
聚合的聚合且未启用模型绘图, -
freq_rare
函数, -
info_content
、high_info_content
、low_info_content
函数, -
lat_long
地理函数, -
time_of_day
、time_of_week
函数, -
varp
、high_varp
、low_varp
函数。
请参阅下表,了解有关支持的检测器函数的更详细视图。
在绘图数据极少的情况下,图表看起来也可能很奇怪。例如,如果只有一个数据点,则它表示为单个点。如果只有两个数据点,则它们由一条线连接。下表显示了“单指标查看器”中支持哪些检测器函数。
表 1。“异常浏览器”和“单指标查看器”中对检测器函数的支持
检测器函数 | 函数描述 | 支持 |
---|---|---|
count、high_count、low_count、non_zero_count、low_non_zero_count |
是 |
|
count、high_count、low_count、non_zero_count、low_non_zero_count,且 summary_count_field_name 不是 doc_count(未启用模型绘图) |
是 |
|
non_zero_count,且 summary_count_field 不是 doc_count,在数据馈送配置中使用基数聚合(未启用模型绘图) |
是 |
|
distinct_count、high_distinct_count、low_distinct_count |
是 |
|
mean、high_mean、low_mean |
是 |
|
min |
是 |
|
max |
是 |
|
metric |
是 |
|
median、high_median、low_median |
是 |
|
sum、high_sum、low_sum、non_null_sum、high_non_null_sum、low_non_null_sum |
是 |
|
varp、high_varp、low_varp |
是(仅当启用模型绘图时) |
|
lat_long |
否(但地图显示在“异常浏览器”中) |
|
info_content、high_info_content、low_info_content |
是(仅当启用模型绘图时) |
|
rare |
是 |
|
freq_rare |
否 |
|
time_of_day、time_of_week |
否 |
在 Kibana 中创建的作业必须使用数据馈送
编辑如果在 Kibana 中创建作业,则必须使用数据馈送。如果要分析的数据未存储在 Elasticsearch 中,则无法使用数据馈送,因此无法在 Kibana 中创建作业。但是,可以使用机器学习 API 创建作业。有关更多信息,请参阅数据馈送和API 快速参考。
在 Kibana 中创建的作业使用模型绘图配置和预聚合数据
编辑如果在 Kibana 中创建单指标或多指标作业,它可能会在底层启用一些选项,您可能需要为大型或长时间运行的作业重新考虑这些选项。
例如,当您在 Kibana 中创建单指标作业时,它通常会启用 model_plot_config
高级配置选项。该配置选项会导致模型信息与结果一起存储,并提供对异常检测的更详细的视图。它专门由 Kibana 中的单指标查看器使用。但是,启用此选项时,可能会给系统的性能增加相当大的开销。如果您的作业有许多实体,例如来自数万台服务器的数据,则为每个存储桶存储此额外的模型信息可能会有问题。如果您不确定是否需要此选项或遇到性能问题,请编辑您的作业配置以禁用此选项。
同样,当您在 Kibana 中创建单指标或多指标作业时,在某些情况下,它会对从 Elasticsearch 检索的数据使用聚合。以这种方式汇总数据的好处之一是 Elasticsearch 会自动在您的集群中分配这些计算。然后,将此汇总数据馈送到机器学习中,而不是原始结果,这减少了在检测异常时必须考虑的数据量。但是,如果您有两个作业,其中一个作业使用预聚合数据,而另一个作业不使用预聚合数据,则它们的结果可能会有所不同。这种差异是由于输入数据的精度差异造成的。机器学习分析旨在识别聚合,并且通过预聚合数据获得的性能可能提高,使得潜在的较差精度是值得的。如果要查看或更改作业中使用的聚合,请参阅数据馈送中的 aggregations
属性。
当数据馈送的聚合间隔与作业的存储桶跨度不匹配时,在单指标查看器和异常浏览器中绘制的图表的值与作业的实际值不同。为了避免此行为,请确保数据馈送配置中的聚合间隔和异常检测作业配置中的存储桶跨度具有相同的值。
日历和过滤器在所有 Kibana 空间中可见
编辑空间使您能够在 Kibana 中组织异常检测作业,并且仅查看属于您空间的作业和其他已保存的对象。但是,此有限范围不适用于日历和过滤器;它们在所有空间中可见。
Kibana 中不支持汇总索引
编辑Kibana 中的异常检测作业或数据馈送中不能使用汇总索引和包含汇总索引的数据视图。如果您尝试分析使用实验性数据汇总功能的索引中的数据,则异常检测作业创建向导将失败。如果您使用 API 创建使用数据汇总功能的异常检测作业,则作业结果可能无法在 Kibana 中的单指标查看器或异常浏览器中正确显示。