View a markdown version of this page

Comment CloudWatch des 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 CloudWatch des alarmes détectent les échecs de déploiement d'Amazon ECS

Vous pouvez configurer Amazon ECS pour définir l'échec du déploiement lorsqu'il détecte qu'un CloudWatch l'alarme est entrée dans ALARM é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.

Les suivants create-service AWS CLI Un exemple 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 Amazon CloudWatch méthode d'alarme 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, voir CreateService dans le Référence de l'API Amazon Elastic Container Service.

  • 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 plus d’informations, consultez É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 l'Amazon CloudWatch alarmes pour détecter les pannes, l'une ou l'autre peut déclencher un échec de déploiement dès que les critères de l'une ou l'autre des méthodes 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.

  • L'Amazonie CloudWatch les alarmes ne sont prises en charge que pour les services Amazon ECS qui utilisent la mise à jour continue (ECS) contrôleur de déploiement.

  • 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 CloudFormation timeouts, pensez à augmenter les timeouts. 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 à DescribeAlarms comptez pour CloudWatch les quotas de service associés à votre compte. Si vous avez d'autres AWS services qui appellent DescribeAlarms, l'interrogation des alarmes par Amazon ECS peut avoir un impact. 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 CloudWatch quotas de service, voir CloudWatch quotas de service dans le CloudWatch Guide de 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 mesures de l'équilibreur de charge des applications, consultez CloudWatch des mesures pour votre équilibreur de charge d'application dans le Guide de l'utilisateur pour les équilibreurs de charge d'application.

  • 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 plus d’informations, consultez Considérations.

  • Si vous utilisez Amazon Simple Queue Service files d'attente dans vos tâches, utilisez ApproximateNumberOfMessagesNotVisible Métrique 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 Disponible CloudWatch statistiques pour Amazon SQS dans le Guide du développeur d'Amazon Simple Queue Service.

Durée de l’intégration

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 un CloudWatch alarme. 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. Quand vous utilisez CloudWatch alarmes pour détecter un échec. Si vous modifiez le temps de cuisson, puis décidez que vous souhaitez utiliser la valeur par défaut d'Amazon ECS, vous devez régler le temps de cuisson manuellement.