Como posso usar a AWS CLI para criar um alarme do CloudWatch com base na detecção de anomalias?

3 minuto de leitura
0

Quero usar a AWS Command Line Interface (AWS CLI) para criar um alarme do Amazon CloudWatch baseado na detecção de anomalias.

Breve descrição

Quando você ativa a detecção de anomalias para uma métrica, o CloudWatch aplica algoritmos de aprendizado de máquina aos dados históricos da métrica. O CloudWatch usa esses dados para criar um modelo dos valores esperados da métrica e gera duas métricas:

  • A maior faixa do comportamento normal da métrica
  • A menor faixa do comportamento normal da métrica, com um valor padrão de dois desvios‑padrão

Para obter mais informações, consulte Como funciona a detecção de anomalias do CloudWatch.

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.

Método 1

1.    Crie um arquivo JSON para definir um alarme do CloudWatch com base na detecção de anomalias:

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

Observação:

  • a Id de m1 está atribuída à métrica NetworkIn de uma instância. t1 é a função do modelo de detecção de anomalias para a métrica NetworkIn. O modelo usa três desvios‑padrão para definir a largura da faixa.
  • ThresholdMetricId está definido como t1 e ComparisonOperator está definido como LessThanLowerOrGreaterThanUpperThreshold. Quando o valor da métrica fica fora da faixa do modelo de anomalia em qualquer direção por dois períodos de avaliação consecutivos, essas configurações disparam o alarme.

2.    Salve o arquivo JSON como anomaly‑alarm.json.

3.    Para criar um alarme com a faixa de detecção de anomalias está especificada no arquivo, execute o seguinte comando:

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

Método 2

Você também pode emitir o comando da AWS CLI sem o arquivo 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)\"}]"

Depois de criar o alarme, o modelo é gerado. A faixa que você vê no gráfico inicialmente é apenas uma aproximação da faixa de detecção de anomalias. Pode levar até 15 minutos para a faixa de detecção de anomalias gerada pelo modelo aparecer no gráfico.

Informações relacionadas

Crie um alarme do CloudWatch com base na detecção de anomalias

put-metric-alarm

AWS OFICIAL
AWS OFICIALAtualizada há 7 meses