如何使用 AWS CLI 以根據異常偵測建立 CloudWatch 警示?

1 分的閱讀內容
0

我想要使用 AWS Command Line Interface (AWS CLI) 來建立根據異常偵測的 Amazon CloudWatch 警示。

簡短描述

您對指標啟動異常偵測時,CloudWatch 即會將機器學習演算法套用至指標的歷史資料。CloudWatch 會使用此資料來建立指標預期值的模型,然後產生以下兩項指標:

  • 正常指標行為的上限區間
  • 正常指標行為的下限區間,預設值為兩個標準差

如需詳細資訊,請參閱 CloudWatch 異常偵測的運作方式

解決方法

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新的 AWS CLI 版本

方法 1

1.    建立 JSON 檔案以根據異常偵測來設定 CloudWatch 警示:

{
  "AlarmActions": [
    "arn:aws:sns:us-east-1:123456789012:CW-Alarm-Notification"
  ],
  "AlarmName": "EC2_NetworkIn_Anomaly_Alarm",
  "AlarmDescription": "Trigger when EC2 NetworkIn is outside normal traffic volume",
  "Metrics": [
    {
      "Id": "m1",
      "ReturnData": true,
      "MetricStat": {
        "Metric": {
          "MetricName": "NetworkIn",
          "Namespace": "AWS/EC2",
          "Dimensions": [
            {
              "Name": "InstanceId",
              "Value": "i-024de5ace7c560660"
            }
          ]
        },
        "Stat": "Average",
        "Period": 300
      }
    },
    {
      "Id": "t1",
      "Expression": "ANOMALY_DETECTION_BAND(m1, 2)"
    }
  ],
  "EvaluationPeriods": 2,
  "ThresholdMetricId": "t1",
  "ComparisonOperator": "LessThanLowerOrGreaterThanUpperThreshold"
}

注意:

  • m1Id 會指派至執行個體的 NetworkIn 指標。t1 則是 NetworkIn 指標的異常偵測模型函數。該模型會使用三個標準差來設定區間寬度。
  • ThresholdMetricId 會設為 t1,而 ComparisonOperator 則會設為 **LessThanLowerOrGreaterThanUpperThreshold。**當指標值往任一方向超出異常模型區間且持續兩個評估期間時,這些設定即會開始警示狀態。

2.    將 JSON 檔案另存為 anomaly-alarm.json

3.    若要以檔案中指定的異常偵測區間建立警示,請執行下列命令:

$ aws cloudwatch put-metric-alarm --cli-input-json file://anomaly-alarm.json

方法 2

您還可以在沒有 JSON 檔案的情況下發出 AWS CLI 命令:

aws cloudwatch put-metric-alarm \
--alarm-name "EC2_NetworkIn_Anomaly_Alarm" \
--alarm-description "Trigger when EC2 NetworkIn is outside normal traffic volume" \
--alarm-actions arn:aws:sns:us-east-1:123456789012:CW-Alarm-Notification \
--comparison-operator LessThanLowerOrGreaterThanUpperThreshold \
--evaluation-periods 2 \
--threshold-metric-id t1 \
--metrics "[{\"Id\":\"m1\",\"ReturnData\":true,\"MetricStat\":{\"Metric\":{\"Namespace\":\"AWS\/EC2\",\"MetricName\":\"NetworkIn\",\"Dimensions\":[{\"Name\":\"InstanceId\",\"Value\":\"i-024de5ace7c560660\"}]},\"Stat\":\"Average\",\"Period\":300}},{\"Id\":\"t1\",\"Expression\":\"ANOMALY_DETECTION_BAND(m1,2)\"}]"

建立警示後,即會產生模型。在剛開始時,您在圖表中看到的區間是異常偵測區間的近似值。最多可能需要 15 分鐘,才會在圖表中顯示模型產生的異常偵測區間。

相關資訊

根據異常偵測建立 CloudWatch 警示

put-metric-alarm

AWS 官方
AWS 官方已更新 6 個月前