

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：使用异常检测功能检测高 CPU 使用率
<a name="createanomalydetector-tutorial"></a>

本教程演示如何在 Amazon OpenSearch 服务中创建异常检测器来检测 CPU 使用率过高。您将使用 OpenSearch 仪表板配置检测器来监控 CPU 使用情况，并在您的 CPU 使用率超过指定阈值时生成警报。

**注意**  
这些步骤适用于的最新版本，可能 OpenSearch 与过去的版本略有不同。

## 先决条件
<a name="createanomalydetector-tutorialprerequisites"></a>
+ 您必须拥有运行 Elasticsearch 7.4 或更高版本或任何 OpenSearch 版本的 OpenSearch 服务域。
+ 您必须将应用程序日志文件提取到包含 CPU 使用率数据的集群中。

## 步骤 1：创建检测器
<a name="anomalydetectorcreate"></a>

首先，创建一个检测器，用于识别 CPU 使用率数据中的异常情况。

1. 在 “ OpenSearch 控制面板” 中打开左侧面板菜单，选择 “**异常检测**”，然后选择 “**创建检测器**”。

1. 将检测器命名为 **high-cpu-usage**。

1. 对于数据来源，选择包含要识别其中异常情况的 CPU 使用率日志文件的索引。

1. 在您的数据中，选择 **Timestamp field**（时间戳字段）。您可以选择添加数据筛选条件。此数据筛选条件仅分析数据来源的子集，并减少不相关数据产生的噪音。

1. 设置 **Detector interval**（检测器间隔）为 **2** 分钟。此间隔定义检测器收集数据的时间（按分钟间隔）。

1.  在 **Window delay**（窗口延迟）中，添加 **1-minute** 延迟。此延迟会增加额外的处理时间，以确保窗口中的所有数据都存在。

1. 选择**下一步**。在异常检测控制面板的检测器名称下，选择 **Configure model**（配置模型）。

1. 对于 **Feature name**（功能名称），请输入 **max\_cpu\_usage**。对于 **Feature state**（功能状态），请选择 **Enable feature**（启用功能）。

1. 对于 **Find anomalies based on**（查找异常情况的依据），请选择 **Field value**（字段值）。

1. 对于 **Aggregation method**（聚合方法），请选择 **`max()`**。

1. 对于 **Field**（字段），请选择数据中的字段，以检查是否存在异常情况。例如，其可能称为 `cpu_usage_percentage`。

1. 所有其他设置保留为默认值，然后选择 **Next**（下一步）。

1. 忽略检测器任务设置并选择 **Next**（下一步）。

1. 在弹出窗口中，选择启动检测器（自动或手动）的时间，然后选择 **Confirm**（确认）。

现在，检测器已配置完毕，在其初始化之后，您可以在检测器面板的 **Real-time results**（实时结果）部分查看 CPU 使用率的实时结果。**Live anomalies**（实时异常情况）部分会显示实时提取数据时发生的任何异常情况。

## 步骤 2：配置警报
<a name="anomalydetectorcreatealert"></a>

现在，您已创建检测器，请创建监视器，该监视器会在检测到满足检测器设置中指定条件的 CPU 使用率时，调用警报以向 Slack 发送消息。当来自一个或多个索引的数据满足调用警报的条件时，您将收到 Slack 通知。

1. 在 “ OpenSearch 控制面板” 中打开左侧面板菜单并选择 “**警报**”，然后选择 “**创建监视器**”。

1. 提供监视器名称。

1. 对于 **Monitor type**（监视器类型），请选择 **Per-query monitor**（每个查询监视器）。每个查询监视器运行指定的查询并定义触发器。

1. 对于 **Monitor defining method**（监视器定义方法），请选择 **Anomaly detector**（异常检测器），然后从 **Detector**（检测器）下拉菜单中选择您在之前部分中创建的检测器。

1. 对于 **Schedule**（计划），请选择监视器收集数据的频率以及您接收警报的频率。在本教程中，请将计划设置为每 **7** 分钟运行。

1. 在 **Triggers**（触发器）部分中，选择 **Add trigger**（添加触发器）。对于 **Trigger name**（触发器名称），请输入 **High CPU usage**。在本教程中，对于 **Severity level**（严重性级别），请选择 **1**，这是最高的严重性级别。

1. 对于 **Anomaly grade threshold**（异常等级阈值），请选择 **IS ABOVE**（超过）。在该菜单下的菜单中，选择要应用的等级阈值。在本教程中，请将 **Anomaly grade**（异常等级）设置为 **0.7**。

1. 对于 **Anomaly confidence threshold**（异常置信阈值），请选择 **IS ABOVE**（超过）。在该菜单下的菜单中，输入与您的异常等级相同的数字。在本教程中，请将 **Anomaly confidence threshold**（异常置信阈值）设置为 **0.7**。

1. 在 **Actions**（操作）部分中，选择 **Destination**（目标）。在 **Name**（名称）字段中，选择目标名称。在 **Type**（类型）菜单中，选择 **Slack**。在 **Webhook URL** 字段中，输入要接收警报的 Webhook URL。有关更多信息，请参阅 [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks)（使用传入 Webhook 发送消息）。

1. 选择**创建**。

## 相关资源
<a name="Anomalydetectorrelatedresources"></a>
+  [在 Amazon OpenSearch 服务中配置提醒](alerting.md)
+  [Amazon OpenSearch 服务中的异常检测](ad.md) 
+  [异常检测 API](https://opensearch.org/docs/latest/monitoring-plugins/ad/api/) 