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