¿Cómo puedo crear una alarma de CloudWatch basada en la detección de anomalías mediante AWS CLI?

3 minutos de lectura
0

Quiero usar la Interfaz de la línea de comandos de AWS (AWS CLI) para crear una alarma de Amazon CloudWatch basada en la detección de anomalías.

Breve descripción

Al activar la detección de anomalías para una métrica, CloudWatch aplica algoritmos de aprendizaje automático a los datos históricos de la métrica. CloudWatch usa esos datos para crear un modelo de los valores previstos de la métrica y genera dos métricas:

  • La banda superior del comportamiento métrico normal
  • La banda inferior del comportamiento métrico normal, con un valor predeterminado de dos desviaciones estándar

Para obtener más información, consulte How CloudWatch anomaly detection works.

Solución

Nota: Si se muestran errores al ejecutar los comandos de AWS CLI, asegúrese de que está utilizando la versión más reciente de AWS CLI.

Método 1

1.    Cree un archivo JSON para configurar una alarma de CloudWatch basada en la detección de anomalías:

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

Nota:

  • El ID de m1 se asigna a la métrica NetworkIn de una instancia. t1 es la función del modelo de detección de anomalías para la métrica NetworkIn. El modelo utiliza tres desviaciones estándar para establecer el ancho de banda.
  • ThresholdMetricId se establece en t1 y ComparisonOperator se establece en LessThanLowerOrGreaterThanUpperThreshold. Si el valor de la métrica se encuentra fuera de la banda del modelo de anomalías en cualquier dirección durante dos períodos de evaluación consecutivos, estos ajustes iniciarán el estado de alarma.

2.    Guarde el archivo JSON como anomaly-alarm.json.

3.    Para crear una alarma con la banda de detección de anomalías especificada en el archivo, ejecute este comando:

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

Método 2

También puede ejecutar el comando de AWS CLI sin el archivo 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)\"}]"

Una vez creada la alarma, se genera el modelo. La banda que se ve inicialmente en el gráfico es una aproximación de la banda de detección de anomalías. La banda de detección de anomalías generada por el modelo puede tardar hasta 15 minutos en aparecer en el gráfico.

Información relacionada

Create a CloudWatch alarm based on anomaly detection

put-metric-alarm

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 9 meses