如何使用 AWS CLI 根据异常检测创建 CloudWatch 警报?

上次更新时间:2020 年 2 月 13 日

如何使用 AWS 命令行界面 (AWS CLI) 根据异常检测创建 Amazon CloudWatch 警报?

简短描述

当您为某个指标启用异常检测后,CloudWatch 会将机器学习算法应用到指标的历史数据,以创建指标的预期值模型。

该模型将生成两个指标,分别代表:

  • 正常指标行为的上限范围
  • 正常指标行为的下限范围,默认值为两个标准偏差

要了解更多信息,请参阅 CloudWatch 异常检测的工作原理

解决方法

注意:确保在实例上安装配置 AWS CLI(如果您尚未安装)。

1.    创建 JSON 文件以根据异常检测设置 CloudWatch 警报:

{
    "AlarmActions": [
        "arn:aws:sns:us-east-1:397466294846:test1"
    ],
    "AlarmName": "MyAlarmName",
    "AlarmDescription": "This alarm uses an anomaly detection model",
    "Metrics": [
        {
            "Id": "m1",
            "ReturnData": true,
            "MetricStat": {
                "Metric": {
                    "MetricName": "NetworkIn",
                    "Namespace": "AWS/EC2",
                    "Dimensions": [
                        {
                            "Name": "InstanceId",
                            "Value": "i-0e1830cdc0447f6b9"
                        }
                    ]
                },
                "Stat": "Average",
                "Period": 60
            }
        },
        {
            "Id": "t1",
            "Expression": "ANOMALY_DETECTION_BAND(m1, 3)"
        }
    ],
    "EvaluationPeriods": 2,
    "ThresholdMetricId": "t1",
    "ComparisonOperator": "LessThanLowerOrGreaterThanUpperThreshold"
}

在上述文件中:

  • m1 Id 分配给实例的 NetworkIn 指标。t1 是 NetworkIn 指标的异常检测模型功能。该模型使用三个标准偏差来设置范围的宽度。
  • ThresholdMetricId 设置为 t1,且 ComparisonOperator 设置为 LessThanLowerOrGreaterThanUpperThreshold.当指标值在两个连续评估期间在任意方向上均超出异常检测模型范围时,这些设置可确保警报进入警报状态。

2.    将 JSON 文件另存为 anomaly-alarm.json。然后,运行以下命令,根据在文件中指定的异常检测范围创建警报:

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

创建完警报后,系统会生成模型。您最初在图表中看到的是异常检测范围的近似值。模型生成的异常检测范围最多可能需要 15 分钟才能显示在图表中。


根据异常检测创建 CloudWatch 警报(使用 AWS 管理控制台)

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?