

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon CloudWatch 異常偵測為自訂指標建立警示
<a name="create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection"></a>

*Ram Kandaswamy 和 Raheem Jiwani，Amazon Web Services*

## 總結
<a name="create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection-summary"></a>

在 Amazon Web Services (AWS) 雲端上，您可以使用 Amazon CloudWatch 建立警示，以監控指標並傳送通知，或在超過閾值時自動進行變更。

若要避免受到[靜態閾值](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)的限制，您可以根據過去的模式建立警示，並在特定指標超出正常操作時段時通知您。例如，您可以從 Amazon API Gateway 監控 API 的回應時間，並接收有關無法滿足服務層級協議 (SLA) 的異常通知。

此模式說明如何針對自訂指標使用 CloudWatch 異常偵測。模式說明如何在 Amazon CloudWatch Logs Insights 中建立自訂指標，或使用 AWS Lambda 函數發佈自訂指標，然後使用 Amazon Simple Notification Service (Amazon SNS) 設定異常偵測和建立通知。

## 先決條件和限制
<a name="create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 現有的 SNS 主題，設定為傳送電子郵件通知。如需詳細資訊，請參閱[《Amazon SNS 文件](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)》中的 Amazon SNS 入門。
+ 使用 [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html) 設定的現有應用程式。

**限制**
+ CloudWatch 指標不支援毫秒時間間隔。如需一般和自訂指標精細程度的詳細資訊，請參閱 [Amazon CloudWatch FAQs](https://aws.amazon.com/cloudwatch/faqs/)。

## Architecture
<a name="create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection-architecture"></a>

![\[CloudWatch 使用 Amazon SNS 主題，在警示啟動時傳送電子郵件通知。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/d47e6f7f-e469-4cb9-b34b-8c4b78d71820/images/49f30340-9552-430a-893a-d0608bb09e38.png)


 該圖顯示以下工作流程：

1. 使用 CloudWatch Logs 建立和更新的指標的日誌會串流至 CloudWatch。

1. 警示會根據閾值啟動，並將警示傳送至 SNS 主題。

1. Amazon SNS 會傳送電子郵件通知給您。

**技術堆疊**
+ CloudWatch
+ AWS Lambda
+ Amazon SNS

## 工具
<a name="create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection-tools"></a>
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 提供可靠、可擴展且靈活的監控解決方案。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 是一種運算服務，可協助您執行程式碼，而無需佈建或管理伺服器。
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 是一種受管服務，可將訊息從發佈者交付給訂閱者。

## 史詩
<a name="create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection-epics"></a>

### 設定自訂指標的異常偵測
<a name="set-up-anomaly-detection-for-a-custom-metric"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 選項 1 - 使用 Lambda 函數建立自訂指標。 | 下載 `lambda_function.py` 檔案 （已連接），然後取代 AWS 文件 GitHub 上 [aws-lambda-developer-guide](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-python/function) 儲存庫中的範例`lambda_function.py`檔案。這為您提供了將自訂指標傳送至 CloudWatch Logs 的範例 Lambda 函數。Lambda 函數使用 Boto3 API 與 CloudWatch 整合。 執行 Lambda 函數之後，您可以登入 AWS 管理主控台、開啟 CloudWatch 主控台，而且已發佈的指標可在已發佈的命名空間下使用。 | DevOps 工程師，AWS DevOps | 
| 選項 2 – 從 CloudWatch 日誌群組建立自訂指標。 | 登入 AWS 管理主控台，開啟 CloudWatch 主控台，然後選擇**日誌群組**。選擇您要為其建立指標的日誌群組。 選擇**動作**，然後選擇**建立指標篩選條件**。針對**篩選條件模式**，輸入您要使用的篩選條件模式。如需詳細資訊，請參閱 CloudWatch 文件中的[篩選和模式語法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)。 若要測試篩選條件模式，請在**測試模式**下輸入一或多個日誌事件。每個日誌事件都必須在一行內，因為 **Log event messages** (日誌事件訊息) 方塊中使用換行來分隔日誌事件。測試模式之後，您可以在指標**詳細資訊**下輸入指標的名稱和值。 如需建立自訂指標的詳細資訊和步驟，請參閱 CloudWatch 文件中的[為日誌群組建立指標篩選條件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CreateMetricFilterProcedure.html)。 | DevOps 工程師，AWS DevOps | 
| 為您的自訂指標建立警示。 | 在 CloudWatch 主控台上，選擇**警示**，然後選擇**建立警示**。選擇**選取指標**，然後在搜尋方塊中輸入您先前建立的指標名稱。選擇**圖形化指標**索引標籤，並根據您的需求設定選項。在**條件**下，選擇**異常偵測**，而非**靜態閾值**。這會顯示以兩個標準預設偏差為基礎的頻帶。您可以設定閾值，並根據需求調整閾值。選擇**下一步**。頻帶是動態的，取決於資料點的品質。當您開始彙總更多資料時，頻帶和閾值會自動更新。  | DevOps 工程師，AWS DevOps | 
| 設定 SNS 通知。 | 在**通知**下，選擇要在警示處於`ALARM`狀態、`OK`狀態或`INSUFFICIENT_DATA`狀態時通知的 SNS 主題。若要讓警示針對相同的警示狀態或不同警示狀態傳送多個通知，請選擇 **Add notification (新增通知)**。選擇**下一步**。輸入警示的名稱與說明。名稱只能包含 ASCII 字元。然後選擇**下一步**。在**預覽和建立**下，確認資訊和條件正確無誤，然後選擇**建立警示**。 | DevOps 工程師，AWS DevOps | 

## 相關資源
<a name="create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection-resources"></a>
+ [將自訂指標發佈至 CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html)
+ [使用 CloudWatch 異常偵測](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html)
+ [警示事件和 Amazon EventBridge](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-and-eventbridge.html)
+ [將自訂指標推送至 Cloud Watch 時，應遵循哪些最佳實務？](https://www.youtube.com/watch?v=mVffHIzIL60)（影片）
+ [CloudWatch Application Insights 簡介](https://www.youtube.com/watch?v=PBO636_t9n0) （影片）
+ [使用 CloudWatch（影片） 偵測異常](https://www.youtube.com/watch?v=8umIX-pUy3k)

## 附件
<a name="attachments-d47e6f7f-e469-4cb9-b34b-8c4b78d71820"></a>

若要存取與本文件相關聯的其他內容，請解壓縮下列檔案： [attachment.zip](samples/p-attach/d47e6f7f-e469-4cb9-b34b-8c4b78d71820/attachments/attachment.zip)