AWS コマンドラインインターフェイス (AWS CLI) を使用して、異常検出に基づく Amazon CloudWatch アラームを作成したいと考えています。
簡単な説明
メトリクスの異常検出を有効にすると、CloudWatch はメトリクスの履歴データに機械学習アルゴリズムを適用します。CloudWatch はこのデータを使用してメトリクスの期待値のモデルを作成し、次の 2 つのメトリクスを生成します。
- 標準メトリクス動作の上限バンド
- 標準メトリクス動作の下限バンド。デフォルト値は 2 標準偏差です。
詳細については、「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"
}
注:
- m1 の Id は、インスタンスの NetworkIn メトリクスに割り当てられます。t1 は NetworkIn メトリクスの異常検知モデル関数です。このモデルでは、3 つの標準偏差を使用してバンドの幅を設定します。
- ThresholdMetricid は t1 に設定され、ComparisonOperator は **LessThanLowefrOrGreaterThanUpperThreshold に設定されています。**これらの設定により、評価期間が 2 回連続して、どちらかの方向に異常モデル範囲外のメトリクス値がある場合、アラーム状態が開始されます。
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