Comment les CloudWatch alarmes détectent les échecs de déploiement d'Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Comment les CloudWatch alarmes détectent les échecs de déploiement d'Amazon ECS

Vous pouvez configurer Amazon ECS pour définir le déploiement comme un échec lorsqu'il détecte qu'une CloudWatch alarme spécifiée est passée dans ALARM cet état.

Vous pouvez éventuellement définir la configuration pour qu'elle revienne au dernier déploiement réussi en cas d'échec d'un déploiement.

L'create-service AWS CLI exemple suivant montre comment créer un service Linux lorsque les alarmes de déploiement sont utilisées avec l'option de restauration.

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}"

Tenez compte des points suivants lorsque vous utilisez la méthode CloudWatch des alarmes Amazon sur un service.

  • La durée pendant laquelle les révisions de service bleues et vertes se déroulent simultanément après le transfert du trafic de production. Amazon ECS calcule cette période en fonction de la configuration d'alarme associée au déploiement. Vous ne pouvez pas définir cette valeur.

  • Le paramètre de demande deploymentConfiguration contient désormais le type de données alarms. Vous pouvez spécifier les noms des alarmes, si vous souhaitez utiliser la méthode et si vous souhaitez lancer une restauration lorsque les alarmes indiquent un échec de déploiement. Pour plus d'informations, consultez le CreateServicemanuel Amazon Elastic Container Service API Reference.

  • La réponse DescribeServices donne un aperçu de l'état d'un déploiement, le rolloutState et rolloutStateReason. Lorsqu'un nouveau déploiement démarre, il commence à l'état IN_PROGRESS. Lorsque le service atteint un état stable et que la durée de l'intégration est terminée, l'état du déploiement passe à COMPLETED. Si le service n'arrive pas à atteindre un état stable et que l'alarme passe à l'état ALARM, le déploiement passe à un état FAILED. Un déploiement dans un état FAILED ne lancera aucune nouvelle tâche.

  • Outre les événements de changement d'état de déploiement de service qu'Amazon ECS envoie pour les déploiements qui ont démarré et se sont terminés, Amazon ECS envoie également un événement lorsqu'un déploiement qui utilise des alarmes échoue. Ces événements fournissent des informations sur la raison pour laquelle un déploiement a échoué ou si un déploiement a été démarré en raison d'une restauration. Pour de plus amples informations, veuillez consulter Événements de modification de l’état de déploiement de service Amazon ECS.

  • Si un nouveau déploiement démarre parce qu'un déploiement précédent a échoué et que la restauration a été activée, le champ reason de l'événement de changement d'état de déploiement de service indique que le déploiement a démarré en raison d'une restauration.

  • Si vous utilisez le disjoncteur de déploiement et les CloudWatch alarmes Amazon pour détecter les défaillances, l'un ou l'autre peut provoquer un échec du déploiement dès que les critères de l'une ou l'autre méthode sont remplis. Une restauration se produit lorsque vous utilisez l'option de restauration pour la méthode à l'origine de l'échec du déploiement.

  • Les CloudWatch alarmes Amazon ne sont prises en charge que pour les services Amazon ECS qui utilisent le contrôleur de déploiement rolling update (ECS).

  • Vous pouvez configurer cette option à l’aide de la console Amazon ECS ou de l’ AWS CLI. Pour plus d'informations, consultez Créer un service à l'aide de paramètres définis et create-service dans la Référence AWS Command Line Interface .

  • Vous remarquerez peut-être que l'état du déploiement reste IN_PROGRESS pendant une durée prolongée. La raison en est qu'Amazon ECS ne modifie pas le statut tant qu'il n'a pas supprimé le déploiement actif, et cela ne se produit qu'après la durée de l'intégration. En fonction de votre configuration d'alarme, le déploiement peut sembler prendre plusieurs minutes de plus que lorsque vous n'utilisez pas d'alarmes (même si le nouvel ensemble de tâches principales est augmenté et l'ancien déploiement réduit). Si vous utilisez des CloudFormation délais d'attente, envisagez de les augmenter. Pour de plus amples informations, veuillez consulter Création de conditions d'attente dans un modèle dans le Guide de l'utilisateur AWS CloudFormation .

  • Amazon ECS appelle DescribeAlarms pour sonder les alarmes. Les appels à prendre en DescribeAlarms compte dans les quotas de CloudWatch service associés à votre compte. Si d'autres AWS services appellentDescribeAlarms, Amazon ECS risque d'avoir un impact sur le fait d'interroger les alarmes. Par exemple, si un autre service effectue suffisamment d’appels à DescribeAlarms pour atteindre le quota, ce service est limité ; Amazon ECS est alors également limité et incapable d’interroger les alarmes. Si une alarme est générée pendant la période de limitation, Amazon ECS peut ne pas la détecter et la restauration peut ne pas avoir lieu. Cela n'a aucun autre impact sur le déploiement. Pour plus d'informations sur les quotas CloudWatch de service, consultez la section Quotas de CloudWatch service dans le Guide de CloudWatch l'utilisateur.

  • Si une alarme est activée à l’état ALARM au début d'un déploiement, Amazon ECS ne surveille pas les alarmes pendant la durée de ce déploiement (il ignore la configuration des alarmes). Ce comportement concerne le cas où vous souhaitez lancer un nouveau déploiement afin de corriger un échec initial.

Alarmes recommandées

Nous vous recommandons d'utiliser les métriques d'alarme suivantes :

  • Si vous utilisez un Application Load Balancer, utilisez les métriques d'Application Load Balancer HTTPCode_ELB_5XX_Count et HTTPCode_ELB_4XX_Count. Ces métriques surveillent la présence de pics HTTP. Pour plus d'informations sur les métriques d'Application Load Balancer, consultez CloudWatch les métriques de votre Application Load Balancer dans le Guide d'utilisation des Application Load Balancers.

  • Si vous avez déjà une application, utilisez les métriques CPUUtilization et MemoryUtilization. Elles vérifient l'utilisation de l'UC et de la mémoire en pourcentage utilisées par le cluster ou le service. Pour de plus amples informations, veuillez consulter Considérations.

  • Si vous utilisez des Amazon Simple Queue Service files d'attente dans vos tâches, utilisez la métrique ApproximateNumberOfMessagesNotVisible Amazon SQS. Cette métrique vérifie le nombre de messages dans la file d'attente qui sont retardés et qui ne peuvent pas être lus immédiatement. Pour plus d'informations sur les métriques Amazon SQS, consultez la section Mesures disponibles CloudWatch pour Amazon SQS dans le manuel Amazon Simple Queue Service Developer Guide.

Temps d'attente

Lorsque vous utilisez l'option de restauration pour vos déploiements de services, Amazon ECS attend un délai supplémentaire après le déploiement de la révision du service cible avant d'envoyer une alarme. CloudWatch C’est ce que l’on appelle la durée de l’intégration. Cette durée commence lorsque :

  • toutes les tâches d’une révision de service cible sont en cours d’exécution et en bon état ;

  • les révisions du service source sont réduites à 0 %.

La durée de l’intégration par défaut est inférieure à 5 minutes. Le déploiement de service est marqué comme terminé après l’expiration de la durée de l’intégration.

Vous pouvez configurer la durée de l’intégration pour un déploiement continu. Lorsque vous utilisez des CloudWatch alarmes pour détecter une panne, si vous modifiez le temps de cuisson, puis que vous décidez de choisir la valeur par défaut d'Amazon ECS, vous devez définir manuellement le temps de cuisson.