Alarme do AWS Cloudwatch disparando prematuramente

1

Eu criei um alarme para interromper uma instância e me enviar um e-mail se estivesse ocioso por muito tempo (utilização média da CPU < 2% por 3 horas). No entanto, nos meus testes, notei que a instância foi interrompida após 1 hora. Anexado está o relatório do email:

Alarm Details:

Name: Stop

Description: Created from EC2 Console

State Change: INSUFFICIENT_DATA -> ALARM

Reason for State Change: Threshold Crossed: 2 datapoints were less than the threshold (2.0). 

The most recent datapoints: http:// 0.0425, 0.038363636363636364.

Timestamp: Thursday 14 March, 2013 22:20:11 UTC

AWS Account: xxxxxxxxxxxx

Threshold:
The alarm is in the ALARM state when the metric is LessThanThreshold 2.0 for 3600 seconds.

Monitored Metric:
MetricNamespace: AWS/EC2
MetricName: CPUUtilization
Dimensions: InstanceId = i-xxxxxxx
Period: 3600 seconds
Statistic: Average
Unit: not specified

State Change Actions:
OK:
ALARM: arn:aws:sns:us-east-1:xxxxxxxxxxxx:NotifyMe
INSUFFICIENT_DATA:

Estou confuso sobre o motivo pelo qual ele entra no estado ALARM depois de apenas 1 hora (3600s) quando o configurei para 3 horas (10800s). Para o meu teste, a instância foi interrompida o dia todo. Depois que criei o alarme, iniciei e não fiz nada com a instância. Ele leva em conta todas as horas paradas quando calcula a utilização média da CPU em 3 horas?

Eu gostaria que o alarme deixasse a instância permanecer ativa pelo limite de 3 horas antes de interromper a instância. Existe uma maneira melhor de fazer isso?

    
por user1272324 15.03.2013 / 18:42

2 respostas

3

Em seu e-mail, ele afirma claramente que seu alarme está configurado para acionar depois de 3600 segundos.

Threshold: The alarm is in the ALARM state when the metric is LessThanThreshold 2.0 for 3600 seconds.

Deve haver uma opção para definir "EvaluationPeriods". O que isto faz é dizer ao alarme quantas vezes avaliar a métrica específica que você deseja verificar. Portanto, no seu caso, você definiria isso como 3 e o alarme verificaria uma vez a cada hora para ver se a métrica é LessThanThreshold 2.0. O alarme será acionado se, por 3 horas consecutivas, a média dos 3 pontos obtidos for LessThanThreshold 2.0.

Outra coisa a notar é que seu estado de alarme foi de INSUFFICIENT_DATA - > ALARME. Eu notei essa atividade com alguns alarmes em que estou trabalhando.

No meu caso:

  • Eu tenho um alarme que interrompe uma instância quando LessThanThreshold 5.0 para CPUUtilization por 1 hora com 6 períodos de avaliação, um a cada 10 minutos.
  • Quando um alarme obtém novos dados após haver INSUFFICIENT_DATA, parece que o alarme disparou para o estado ALARM, pois acho que ele trata INSUFFICIENT_DATA como 0.0 (não me cite isso, isso é exatamente o que eu suponho baseado em algum testes estou correndo).
  • Mesmo que o primeiro ponto seja 25.6%, os últimos 5 pontos foram INSUFFICIENT_DATA (possivelmente 0.0?), então a média é de aproximadamente 4.2ish, que é LessThanThreshold 5.0.
  • Então, meu alarme é acionado, embora tecnicamente tenha sido apenas 10 minutos com dados "reais".

Para atenuar isso, configurei um script para que, sempre que uma instância for iniciada, o alarme seja criado com ela e, quando um alarme for acionado, ele seja excluído depois de parar a instância à qual ele está atribuído.

    
por 29.03.2016 / 15:31
1

Parece que você configurou o alarme de maneira errada, conforme o e-mail acima que você configurou para disparar se o LessThanThreshold 2.0 for 3600 segundos.

  • Para resolver isso, faça o seguinte: -

  • No console do CloudWatch Management, basta selecionar o alarme. Você encontrará abaixo o Limite explicado conforme mostrado na imagem abaixo Limite: CPUUtilization > = 70 por 5 minutos

  • Cliquecomobotãodireitodomousenoalarmeemodifique-odeacordocomsuanecessidade

  • Vocêpodeusaraapias-describe-alarmparatercertezadesuasinformaçõesdealarme,comoabaixolink Descrição da API
por 18.03.2013 / 13:15