加载中

故障排除和常见问题解答

Elastic Stack Serverless

使用本节中的信息来排查常见问题并查找常见问题的答案。

如果异常检测作业失败,请尝试按照以下步骤重启作业。如果重启后的作业按预期运行,则导致作业失败的问题是暂时的,无需进一步调查。如果作业在重启后很快失败,则问题是持续性的,需要进一步调查。在这种情况下,请通过查看 Kibana 中作业管理窗格上的作业状态来找出失败作业运行的节点。然后获取该节点的日志,查找消息中包含异常检测作业 ID 的异常和错误,以便更好地了解问题。

如果异常检测作业失败,请执行以下操作以从 failed 状态恢复

  1. 使用 Stop datafeed API,并将 force 参数设置为 true,来*强制*停止相应的数据feed。例如,以下请求强制停止 my_datafeed 数据feed。

     POST _ml/datafeeds/my_datafeed/_stop {
      "force": "true"
    }
    
  2. 使用 Close anomaly detection job API,并将 force 参数设置为 true,来*强制*关闭异常检测作业。例如,以下请求强制关闭 my_job 异常检测作业

     POST _ml/anomaly_detectors/my_job/_close?force=true 
  3. 在 Kibana 的作业管理窗格中重启异常检测作业。

有关详细信息,请参阅 Thomas Veasey 和 Stephen Dodson 的论文 Anomaly Detection in Application Performance Monitoring Data,以及我们在 The Math behind Elastic Machine LearningMachine Learning and Statistical Methods for Time Series Analysis 上的网络研讨会。

C++ 代码中引用的进一步论文

所有输入特征都由用户指定,例如,使用 各种统计函数(如计数或均值)对感兴趣的数据进行计算。

是的。仅使用异常检测作业配置中指定的数据进行检测。

集成模型生成一个概率值,然后将其映射到 0 到 100 之间的异常严重性分数。观察数据的概率越低,严重性分数越高。有关详细信息,请参阅这篇 高级概念文档。校准(也称为标准化)发生在两个级别

  1. 在同一指标/分区内,分数会在 renormalization_window_days 参数指定的窗口内“回溯”重新标准化。例如,这就是为什么存在 record_scoreinitial_record_score
  2. 在多个分区之间,分数会按照 这篇博文 中所述的方式重新标准化。

它是一个在线模型,并且会持续更新。模型的旧部分会根据 model_prune_window 参数(通常为 30 天)被修剪掉。

有一套基准用于监控异常检测算法的性能,并确保随着方法的不断开发和完善,不会出现回归。它们被称为“数据场景”,包含 3 个部分

  • 一个数据集(存储为 Elasticsearch 快照),
  • 一个机器学习配置(异常检测、dfanalysis、transform 或 inference),
  • 一组任意的静态断言(桶计数、异常分数、准确率等)。

性能指标会从每次场景运行中收集,并持久化到 Elastic Cloud 集群中。然后,这些信息用于跟踪不同构建的性能随时间的变化,主要是为了检测性能(结果质量和计算时间)的任何回归。

在客户方面,情况有所不同。没有常规方法来监控模型性能,因为它属于无监督。通常,模型输出的实际应用包括以下一个或多个步骤

  • 根据特定的异常分数,为影响因素、桶或记录创建警报。
  • 使用预测功能来预测未来感兴趣指标的发展情况。
  • 使用一个或多个异常检测作业的组合来识别重要的异常影响因素。

对于给定时间序列中的每条记录,异常检测模型都会提供一个异常严重性分数、95% 的置信区间和一个实际值。这些数据存储在索引中,可以使用 Get Records API 检索。利用这些信息,您可以使用标准度量来评估预测准确性、区间校准等。可以使用 Elasticsearch 聚合来计算这些统计数据。

异常检测的目的是对发生异常的时期进行最佳排序。评估此目的的一种实用方法是跟踪实际事件,并查看它们与异常检测预测的相关程度。

Elasticsearch 的异常检测模型会持续学习并适应时间序列的变化。这些变化可能表现为缓慢的漂移以及突然的跳跃。因此,我们会非常小心地管理对不断变化的数据特征的适应。在拟合异常时期(过拟合)和不学习新的正常行为之间总是存在细微的权衡。以下是 Elastic 用来管理这种权衡的主要方法

  • 通过测量预测中的偏差和误差分布的矩来学习最佳衰减率。
  • 允许周期性模式中存在连续的小漂移。这是通过相对于一个小的有界时间偏移,持续最小化最后一个迭代中的平均预测误差来实现的。
  • 如果预测在很长一段时间内显著错误,算法会测试时间序列是否发生了突然变化。假设检验用于测试不同类型的变化,例如值缩放、值偏移以及周期性模式(如夏令时)中的大幅时间偏移。
  • 在不同长度的时间窗口上运行连续的假设检验,以测试是否存在新的或已更改的周期性模式的显著证据,并在拒绝不变特征的原假设时更新模型。
  • 累积日历天的误差统计数据,并持续测试是否需要将预测日历特征添加到模型中或从模型中移除。

Elastic 机器学习需要最少的数据量才能为异常检测构建有效的模型。

  • 对于诸如 meanminmaxmedian 等采样指标,最小数据量是八个非空桶跨度或两小时,以较大者为准。
  • 对于所有其他非零/非空指标和基于计数的数量,是四个非空桶跨度或两小时,以较大者为准。
  • 对于 countsum 函数,空桶很重要,因此它与采样指标相同——八个桶或两小时。
  • 对于 rare 函数,通常需要大约 20 个桶跨度。对于总体模型,它可能更快,但这取决于每个桶的互动人数。

经验法则

  • 周期性数据超过三周,或非周期性数据有几百个桶
  • 至少与您想要预测的数据量一样多

Elastic 机器学习算法被编程为处理缺失和嘈杂的数据,并利用基于学习到的统计属性的去噪和数据信誉技术。

© . This site is unofficial and not affiliated with Elasticsearch BV.