正在加载

问题排查和常见问题解答

Elastic Stack Serverless

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

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

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

  1. 使用 停止数据馈送 API,将 force 参数设置为 true强制停止相应的数据馈送。例如,以下请求强制停止 my_datafeed 数据馈送。

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

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

有关详细信息,请参阅 Thomas Veasey 和 Stephen Dodson 撰写的论文 应用程序性能监控数据中的异常检测,以及我们在 Elastic Machine Learning 背后的数学原理时间序列分析的机器学习和统计方法 上的网络研讨会。

C++ 代码中引用的其他论文

所有输入特征均由用户指定,例如,使用 不同的统计函数,如对感兴趣数据的计数或均值。

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

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

  1. 在同一个指标/分区中,分数在 renormalization_window_days 参数指定的时间窗口内“及时”重新标准化。例如,这就是同时存在 record_scoreinitial_record_score 的原因。
  2. 在多个分区中,分数按 这篇博文 中所述进行重新标准化。

它是一个在线模型,并不断更新。模型旧的部分会根据参数 model_prune_window (通常为 30 天)进行修剪。

有一组基准来监控异常检测算法的性能,并确保随着方法的不断开发和完善,不会发生任何回归。它们被称为“数据场景”,由 3 件事组成

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

性能指标是从每个场景运行中收集的,并保存在 Elastic Cloud 集群中。然后,此信息用于跟踪不同构建在一段时间内的性能,主要用于检测性能(结果质量和计算时间)中的任何回归。

在客户方面,情况有所不同。没有传统的方法来监控模型性能,因为它是无监督的。通常,模型输出的操作化包括以下一个或多个步骤

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

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

异常检测的目的是实现对发生异常的时段的最佳排序。评估此方法的实用方法是跟踪实际事件,并查看它们与异常检测的预测的相关性如何。

Elasticsearch 的异常检测模型会不断学习并适应时间序列中的变化。这些变化可以采用缓慢漂移以及突然跳跃的形式。因此,我们会非常谨慎地管理对不断变化的数据特征的适应。在拟合异常时段(过度拟合)和不学习新的正常行为之间始终存在一个很好的权衡。以下是 Elastic 用于管理这种权衡的主要方法

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

Elastic Machine Learning 需要最少的数据量才能构建有效的异常检测模型。

  • 对于采样的指标(例如 meanminmaxmedian),最小数据量为八个非空存储桶跨度或两个小时,以较大者为准。
  • 对于所有其他非零/空指标和基于计数的数量,则为四个非空存储桶跨度或两个小时,以较大者为准。
  • 对于 countsum 函数,空存储桶很重要,因此它与采样的指标相同 - 八个存储桶或两个小时。
  • 对于 rare 函数,通常约为 20 个存储桶跨度。对于人口模型,速度可能会更快,但这取决于每个存储桶中交互的人数。

经验法则

  • 对于周期性数据,超过三个星期,对于非周期性数据,则为几百个存储桶
  • 至少与您想要预测的数据量相当的数据

Elastic 机器学习算法经过编程,可以处理缺失和嘈杂的数据,并使用基于学习的统计属性的去噪和数据信誉技术。

© . All rights reserved.