Como posso usar a AWS CLI para criar um alarme do CloudWatch com base na detecção de anomalias?
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
Conteúdo relevante
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 3 anos