Comment puis-je créer une alarme CloudWatch basée sur la détection d'anomalies à l'aide de l'interface de la ligne de commande AWS ?

Lecture de 3 minute(s)
0

Je souhaite créer une alerte Amazon CloudWatch basée sur la détection d'anomalies à l'aide de l'interface de la ligne de commande AWS (AWS CLI).

Brève description

Lorsque vous activez la détection d'anomalies pour une métrique, CloudWatch applique des algorithmes de machine-learning aux données historiques de la métrique. À l'aide de ces données, CloudWatch crée un modèle des valeurs attendues de la métrique et génère deux métriques :

  • La bande supérieure du comportement métrique normal
  • La bande inférieure du comportement métrique normal, avec une valeur par défaut de deux écarts types

Pour plus d'informations, reportez-vous à Fonctionnement de la détection d'anomalies dans CloudWatch.

Résolution

Remarque : si vous recevez des messages d'erreur lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Méthode 1

1.    Créez un fichier JSON pour définir une alerte CloudWatch basée sur la détection d'anomalies :

{
  "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"
}

Remarque :

  • l'ID de m1 est attribué à la métrique NetworkIn d'une instance. t1 est la fonction du modèle de détection d'anomalies pour la métrique NetworkIn. Le modèle utilise trois écarts types pour définir la largeur de la bande.
  • ThresholdMetricId est défini sur t1 et ComparisonOperator sur LessThanLowerOrGreaterThanUpperThreshold. Lorsque la valeur métrique se situe en dehors de la bande du modèle d'anomalie dans l'une ou l'autre direction pendant deux périodes d'évaluation consécutives, ces paramètres déclenchent l'état d'alerte.

2.    Enregistrez le fichier JSON sous le nom anomaly-alarm.json.

3.    Pour créer une alerte avec la bande de détection d'anomalies spécifiée dans le fichier, exécutez la commande suivante :

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

Méthode 2

Vous pouvez également émettre la commande AWS CLI sans le fichier JSON :

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)\"}]"

Une fois l'alerte créée, le modèle est généré. La bande que vous voyez initialement sur le graphique est une approximation de la bande de détection d'anomalies. La bande de détection d'anomalies générée par le modèle peut prendre jusqu'à 15 minutes pour apparaître dans le graphique.

Informations connexes

Création d'une alerte CloudWatch basée sur la détection d'anomalies

put-metric-alarm

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois