Por que minha política de Auto Scaling do Amazon EC2 não é acionada quando meu alarme do CloudWatch muda de estado?

7 minuto de leitura
0

Eu configurei um alarme do Amazon CloudWatch para acionar minha política de Auto Scaling do Amazon Elastic Compute Cloud (Amazon EC2). Por que minha política de Auto Scaling do Amazon EC2 não é acionada quando meu alarme do CloudWatch muda de estado?

Breve descrição

Quando um alarme do CloudWatch passa para um novo estado de alarme (**OK ****, **ALARM ou INSUFICIENT_DATA), o alarme invoca qualquer ação configurada para esse estado. O Amazon EC2 Auto Scaling usa somente o período configurado no alarme para determinar se o estado deve mudar. Portanto, para ações do Auto Scaling, o alarme continua invocando a ação configurada para cada minuto em que o alarme permanece no novo estado, independentemente do período configurado.

Os motivos comuns pelos quais uma mudança de estado de alarme do CloudWatch não aciona uma política do Amazon EC2 Auto Scaling incluem:

  • A ação do Auto Scaling não está habilitada para o alarme do CloudWatch, o que impede que a política de escalabilidade seja invocada.
  • A política de escalabilidade no grupo do Auto Scaling está desativada. Uma política desativada impede que o grupo seja avaliado.
  • O grupo do Auto Scaling tem políticas de escalabilidade simples ou políticas de escalabilidade por etapas conflitantes, que impedem que algumas das políticas sejam acionadas.
  • O grupo do Auto Scaling tem um gancho do ciclo de vida incompleto, que impede que todas as políticas simples de escalabilidade sejam aplicadas. Uma instância pendente também causa atrasos nas políticas de escalabilidade de rastreamento de etapas e metas. Isso ocorre porque o Auto Scaling não considera a instância na capacidade do grupo até que o gancho do ciclo de vida seja concluído e o tempo de aquecimento seja concluído (para aumentar a escala horizontalmente). A instância ainda é contabilizada na capacidade do grupo (para expansão) de evitar escalabilidade excessiva. O lifecycle hook é concluído quando atinge o tempo limite ou quando uma chamada da API CompleteLifecycleAction ou da AWS Command Line Interface (AWS CLI) é feita.

Resolução

Antes de começar, certifique-se de que o alarme do CloudWatch esteja em transição para o estado ALARM. Se a configuração de um alarme não corresponder ao limite da métrica que ele está monitorando, o alarme pode não passar para o estado ALARM. Se um alarme não mudar de estado, ele não acionará as políticas do Amazon EC2 Auto Scaling. Para mais informações sobre como os alarmes do CloudWatch são avaliados, consulte Avaliação de um alarme.

Verifique se o alarme do CloudWatch entra no estado ALARM quando esperando verificando o valor Limite do alarme. Aumente ou diminua o Limite para corresponder ao valor esperado. Além disso, revise o Período e o Período de avaliação do alarme. Talvez seja necessário editar o Período do alarme e o Período de avaliação para acionar sua política do Amazon EC2 Auto Scaling conforme o esperado. Para mais informações sobre como ter certeza de que seu alarme aciona ações, consulte Como ter certeza de se os alarmes do CloudWatch acionam ações? .

Importante: ao criar ou editar alarmes, lembre-se dos seguintes pontos:

  • Certifique-se de não ter suspendido os processos de escalabilidade (AlarmNotification, Launch ou Terminate) do seu grupo do Amazon EC2 Auto Scaling. Certifique-se de retomar esses processos de escalonamento se eles estiverem suspensos.
  • Nunca edite diretamente os alarmes associados às políticas de rastreamento de alvos. A edição desses alarmes pode causar efeitos indesejados. O limite desses alarmes é determinado automaticamente com base no valor alvo definido na política de escalabilidade.

Verifique se as ações do Amazon EC2 Auto Scaling estão habilitadas para o alarme do CloudWatch

Para que um alarme do CloudWatch invoque uma política do Amazon EC2 Auto Scaling, o parâmetro ActionsEnabled deve estar ativado na configuração do alarme. Certifique-se de que o parâmetro ActionsEnabled seja verdadeiro na configuração do seu alarme.

Observação: se você criar ou atualizar seu alarme usando o console do CloudWatch, o parâmetro ActionsEnabled será definido como verdadeiro por padrão.

Para verificar e habilitar ações de alarme usando a AWS CLI:

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

1.    Verifique sua configuração atual usando describe-alarms da seguinte forma. Certifique-se de substituir myalarm pelo ID do seu alarme.

aws cloudwatch describe-alarms --alarm-names "myalarm" --query 'MetricAlarms[].ActionsEnabled'

2.    Revise a saída. Se o parâmetro ActionsEnabled não estiver definido como verdadeiro, ative as ações de alarme usando enable-alarm-actions da seguinte forma. Certifique-se de substituir myalarm pelo ID do seu alarme.

aws cloudwatch enable-alarm-actions --alarm-names myalarm

Para verificar e ativar ações de alarme usando a API do CloudWatch:

1.    Verifique sua configuração atual usando DescribeAlarms.

2.    Se as ações não estiverem habilitadas para seu alarme, ative as ações usando EnableAlarmActions.

Verifique as políticas simples de escalabilidade e escalabilidade por etapas para seu grupo do Amazon EC2 Auto Scaling

Para verificar as políticas de escalabilidade do seu grupo usando o console do Amazon EC2:

1.    Faça login no console do Amazon EC2.

2.    No painel de navegação, em Auto Scaling, escolha Grupos do Auto Scaling.

3.    No painel de conteúdo, selecione seu grupo do Auto Scaling.

4.    Escolha a guia Ajuste de escala automático.

5.    Observe o Tipo de política (Escalabilidade por etapas, Escalabilidade simples ou Rastreamento de alvo).

Para verificar as políticas de escalabilidade usando a AWS CLI, use o comando describe-policies para o ID do seu grupo do Auto Scaling com o parâmetro --policy-types. A saída lista as políticas de cada tipo (SimpleScaling, StepScaling ou Target tracking).

Para verificar as políticas de escalabilidade usando uma API, use a chamada DescribePolicies com o parâmetro PolicyTypes. A saída lista as políticas de cada tipo (SimpleScaling, StepScaling ou Target tracking).

Se você tiver uma política de escalabilidade simples em vigor, qualquer outra política de escalabilidade simples não será invocada até que as seguintes condições sejam atendidas:

  • A política de escalabilidade simples atualmente em vigor foi concluída.
  • O período de esfriamento da política do Amazon EC2 Auto Scaling já passou. Uma política de escalabilidade simples respeita o período de esfriamento padrão ou especificado da política do Amazon EC2 Auto Scaling.

Observação: a execução de uma política de escalabilidade simples não bloqueia completamente a execução de políticas de escalonamento por etapas ou rastreamento de alvos. Certifique-se de que políticas contraditórias não sejam aplicadas ao mesmo tempo.

Verifique se há ganchos do ciclo de vida do Auto Scaling em sua política do Amazon EC2 Auto Scaling

Quando um gancho do ciclo de vida do Auto Scaling está em vigor, políticas simples de escalabilidade não são executadas. Se você usa uma política de escalabilidade simples em seu grupo do Auto Scaling, não se esqueça de interromper qualquer gancho do ciclo de vida.

Observação: as políticas de escalabilidade por etapas ainda são acionadas se houver um gancho do ciclo de vida em andamento. No entanto, as políticas aumentam lentamente porque as instâncias só iniciam o cronômetro de aquecimento após o término do gancho do ciclo de vida.

Verifique se todos os ganchos do ciclo de vida foram concluídos com o resultado de CONTINUAR ou ABANDONAR após a expiração de seus períodos de tempo limite global ou de tempo limite de pulsação.

Para verificar as ações do gancho do ciclo de vida usando o console do Amazon EC2:

1.    Faça login no console do Amazon EC2.

2.    No painel de navegação, em Auto Scaling, escolha Grupos do Auto Scaling.

3.    No painel de conteúdo, selecione seu grupo do Auto Scaling.

4.    Escolha a guia Atividade e, em seguida, vá até a seção Histórico de atividades.

5.    Analise a atividade para ver se há ações contínuas do gancho do ciclo de vida.

6.    Para ver as etapas para encerrar um gancho do ciclo de vida, consulte Concluir o gancho do ciclo de vida. Para concluir as ações do gancho do ciclo de vida usando a AWS CLI, use o comando complete-lifecycle-action. Para concluir as ações do gancho do ciclo de vida usando uma API, faça uma chamada CompletLifecycleAction.


Informações relacionadas

Como solucionar problemas de escalabilidade com meu grupo do Amazon EC2 Auto Scaling?

Solução de problemas do Amazon EC2 Auto Scaling

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos