如何使用 AWS CLI 创建基于异常检测的 CloudWatch 警报?

1 分钟阅读
0

我想使用 AWS 命令行界面(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 指标。t1NetworkIn 指标的异常检测模型函数。该模型使用三个标准差来设置区间宽度。
  • ThresholdMetricId 设置为 t1ComparisonOperator 设置为 **LessThanLowerOrGreaterThanUpperThreshold。**当指标值在连续两个评估周期内始终处于任一方向的异常模型区间外时,这些设置将启动警报状态。
  1. 将 JSON 文件保存为 anomaly-alarm.json

  2. 要使用文件中指定的异常检测区间创建警报,请运行以下命令:

$ 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 官方已更新 8 个月前