Como os alarmes do CloudWatch realizam a detecção de falhas de implantação do Amazon ECS - Amazon Elastic Container Service

Como os alarmes do CloudWatch realizam a detecção de falhas de implantação do Amazon ECS

É possível configurar o Amazon ECS para definir que a implantação falhou quando ele detectar que um alarme especificado do CloudWatch entrou no estado de ALARM.

Opcionalmente, você pode definir a configuração para reverter uma implantação com falha para a última implantação concluída.

O seguinte exemplo de create-service da AWS CLI mostra como criar um serviço do Linux quando os alarmes de implantação são usados com a opção de reversão.

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 3 \ --deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

Considere o seguinte quando usar o método de alarmes do Amazon CloudWatch em um serviço.

  • O tempo de incorporação é um período depois do aumento da escala horizontalmente de uma nova versão do serviço e da redução da escala horizontalmente da versão antiga do serviço, durante o qual o Amazon ECS continua a monitorar o alarme associado à implantação. O Amazon ECS calcula esse período com base na configuração do alarme associada à implantação.

  • O parâmetro de solicitação deploymentConfiguration agora contém o tipo de dados alarms. É possível especificar os nomes dos alarmes, se deve usar o método e se deve iniciar uma reversão quando os alarmes indicarem uma falha na implantação. Para obter mais informações, consulte CreateService na Referência de API do Amazon Elastic Container Service.

  • A resposta DescribeServices fornece um insight sobre o estado de uma implantação, o rolloutState e o rolloutStateReason. Quando uma nova implantação é iniciada, seu estado começa como IN_PROGRESS. Quando o serviço atinge um estado estacionário e o tempo de incorporação está concluído, o estado da implantação passa a ser COMPLETED. Se o serviço não conseguir alcançar um estado estacionário e o alarme entrar no estado ALARM, a implantação passará para o estado FAILED. Uma implantação em um estado FAILED não iniciará qualquer nova tarefa.

  • Além dos eventos de alteração de estado de implantação do serviço que o Amazon ECS envia para implantações que foram iniciadas e concluídas, o Amazon ECS também envia um evento quando uma implantação que usa alarmes apresenta falha. Esses eventos fornecem detalhes sobre o motivo da falha de uma implantação ou se uma implantação foi iniciada devido a uma reversão. Para ter mais informações, consulte Eventos de alteração no estado da implantação do serviço do Amazon ECS.

  • Se uma nova implantação for iniciada porque uma implantação anterior tiver apresentado falha e a reversão tiver sido ativada, o campo reason do evento de alteração de estado de implantação do serviço indicará que a implantação foi iniciada devido a uma reversão.

  • Se você usar o disjuntor de implantação e os alarmes do Amazon CloudWatch para detectar falhas, qualquer um deles poderá iniciar uma falha de implantação assim que os critérios de qualquer um dos métodos forem atendidos. Uma reversão ocorre quando você usa a opção de reversão para o método que iniciou a falha de implantação.

  • Os alarmes do Amazon CloudWatch só são compatíveis com serviços do Amazon ECS que usam o controlador de implantação de atualização contínua (ECS).

  • É possível configurar essa opção usando o console do Amazon ECS ou a AWS CLI. Para obter mais informações, consulte Criar um serviço usando parâmetros definidos e create-service na Referência da AWS Command Line Interface.

  • É possível observar que o status da implantação permanece IN_PROGRESS por um período prolongado. A razão para isso é que o Amazon ECS não altera o status até que ele tenha excluído a implantação ativa e isso não acontece até depois do tempo de incorporação. Dependendo da configuração do alarme, a implantação aparentemente pode demorar alguns minutos a mais do que quando você não usa alarmes (mesmo que o novo conjunto de tarefas primárias tenha um aumento na escala verticalmente e a antiga implantação tenha uma redução na escala verticalmente). Se você usa os tempos limite do CloudFormation, considere aumentar os tempos limite. Para obter mais informações, consulte Criar condições de espera em um modelo no Guia do usuário do AWS CloudFormation.

  • O Amazon ECS chama DescribeAlarms para pesquisar os alarmes. As chamadas para DescribeAlarms são contabilizadas nas cotas de serviço do CloudWatch associadas à sua conta. Se você tiver outros serviços da AWS que chamem DescribeAlarms, pode haver um impacto na pesquisa dos alarmes pelo Amazon ECS. Por exemplo, se outro serviço fizer chamadas para DescribeAlarms suficientes para atingir a cota, esse serviço será submetido a controle de utilização e o Amazon ECS também será submetido a controle de utilização e não poderá sondar alarmes. Se um alarme for gerado durante o período de controle de utilização, o Amazon ECS poderá perder o alarme e a reversão poderá não ocorrer. Não há outro impacto na implantação. Para obter mais informações sobre cotas de serviço do CloudWatch, consulte Cotas de serviço do CloudWatch no Guia do usuário do CloudWatch.

  • Se um alarme estiver no estado ALARM no início de uma implantação, o Amazon ECS não monitorará os alarmes durante a implantação (o Amazon ECS ignora a configuração do alarme). Esse comportamento aborda o caso em que você deseja iniciar uma nova implantação para corrigir uma falha de implantação inicial.

Alarmes recomendados

Recomendamos que você use as seguintes métricas de alarme:

  • Se você usa um Application Load Balancer, use as métricas HTTPCode_ELB_5XX_Count eHTTPCode_ELB_4XX_Count do Application Load Balancer. Essas métricas verificam picos de HTTP. Para obter mais informações sobre as métricas do Application Load Balancer, consulte CloudWatch metrics for your Application Load Balancer (Métricas do CloudWatch para seu Application Load Balancer) no Guia do usuário para Application Load Balancers.

  • Se você tiver uma aplicação existente, use as métricas CPUUtilization e MemoryUtilization. Essas métricas verificam a porcentagem de CPU e memória que o cluster ou serviço usa. Para ter mais informações, consulte Considerações.

  • Se você usa filas do Amazon Simple Queue Service nas suas tarefas, use a métrica ApproximateNumberOfMessagesNotVisible do Amazon SQS. Essa métrica verifica o número de mensagens na fila que estão atrasadas e indisponíveis para leitura imediata. Para obter mais informações sobre métricas do Amazon SQS, consulte Métricas disponíveis do CloudWatch para o Amazon SQS no Guia do desenvolvedor do Amazon Simple Queue Service.