Pourquoi ma stratégie Amazon EC2 Auto Scaling ne se déclenche-t-elle pas lorsque mon alarme CloudWatch change d'état ?

Dernière mise à jour : 17/12/2020

J'ai configuré une alarme Amazon CloudWatch pour déclencher ma stratégie Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling. Pourquoi ma stratégie Amazon EC2 Auto Scaling ne se déclenche-t-elle pas lorsque mon alarme CloudWatch change d'état ?

Brève description

Lorsqu'une alarme CloudWatch change d'état (OK, ALARM ou INSUFFICIENT_DATA), elle appelle les actions configurées pour cet état. Amazon EC2 Auto Scaling utilise uniquement la période configurée sur l'alarme pour déterminer si l'état doit changer. C’est pourquoi, dans le cas d'actions Amazon EC2 Auto Scaling, l'alarme continue d'appeler l'action configurée pour chaque minute pendant laquelle elle reste dans le nouvel état, quelle que soit la période configurée.

Les principales raisons pour lesquelles le changement d'état d'une alarme CloudWatch ne déclenche pas une stratégie Amazon EC2 Auto Scaling sont les suivantes :

  • L'action Auto Scaling n'est pas activée pour l'alarme CloudWatch, ce qui empêche l'appel de la stratégie de mise à l’échelle.
  • La stratégie de mise à l'échelle du groupe Auto Scaling est désactivée. Une stratégie désactivée empêche le groupe d'être évalué.
  • Le groupe Auto Scaling contient des stratégies conflictuelles de mise à l’échelle simple ou à étapes, ce qui empêche le déclenchement de certaines stratégies.
  • Le groupe Auto Scaling dispose d’un hook de cycle de vie incomplet, ce qui empêche l'application de toutes les stratégies de mise à l’échelle simple. Une instance en attente entraîne également des retards dans les stratégies de mise à l'échelle du suivi des étapes et des cibles. Cela est dû au fait qu’Auto Scaling ne compte pas l'instance dans la capacité du groupe avant la fin du hook de cycle de vie et du temps d'échauffement (pour la montée en puissance). L'instance est toujours comptée dans la capacité du groupe (pour la mise à l'échelle) afin d'éviter une mise à l'échelle excessive. Le hook de cycle de vie se termine lorsqu'il expire ou lorsqu'un appel d'API CompleteLifecycleAction ou d'interface de ligne de commande AWS (AWS CLI) est effectué.

Résolution

Avant de commencer, assurez-vous que votre alarme CloudWatch passe à l'état ALARM. Si la configuration d'une alarme ne correspond pas au seuil de la métrique qu'elle surveille, l'alarme risque de ne pas passer à l'état ALARM. Si une alarme ne change pas d'état, elle ne déclenche pas les stratégies Amazon EC2 Auto Scaling. Pour plus d'informations sur l'évaluation des alarmes CloudWatch, consultez Évaluation d'une alarme.

Assurez-vous que votre alarme CloudWatch passe à l'état ALARM au moment prévu en vérifiant la valeur seuil de l'alarme. Augmentez ou diminuez le seuil de manière à ce qu'il corresponde à la valeur souhaitée. Vérifiez également la période et la période d'évaluation de l'alarme. Vous devrez peut-être modifier votre alarme et changer la période et la période d'évaluation pour déclencher votre stratégie Amazon EC2 Auto Scaling comme prévu. Pour plus d'informations sur la manière de vous assurer que votre alarme déclenche des actions, consultez Comment puis-je m'assurer que les alarmes CloudWatch déclenchent des actions ?

Important : Lorsque vous créez ou modifiez des alarmes, gardez à l'esprit les points suivants :

  • Assurez-vous de ne pas avoir interrompu les processus de mise à l’échelle (AlarmNotification, Launch ou Terminate) pour votre groupe Amazon EC2 Auto Scaling. Assurez-vous de reprendre ces processus de mise à l’échelle s'ils ont été interrompus.
  • Ne modifiez jamais directement les alarmes associées aux stratégies de suivi des cibles. La modification de ces alarmes peut entraîner des effets non désirés. Le seuil de ces alarmes est automatiquement déterminé en fonction de la valeur cible définie dans la stratégie de mise à l'échelle.

Vérifier si les actions Amazon EC2 Auto Scaling sont activées pour l'alarme CloudWatch

Pour qu'une alarme CloudWatch appelle une stratégie Amazon EC2 Auto Scaling, le paramètre ActionsEnabled doit être activé dans la configuration de l'alarme. Assurez-vous que le paramètre ActionsEnabled est défini sur true dans la configuration de votre alarme.

Remarque : Si vous créez ou mettez à jour votre alarme via la console CloudWatch, le paramètre ActionsEnabled est défini sur true par défaut.

Pour vérifier et activer les actions d'une alarme via l'interface de ligne de commande AWS :

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes depuis AWS CLI, assurez-vous que vous utilisez la version AWS CLI la plus récente.

1.    Vérifiez votre configuration actuelle à l'aide de describe-alarms comme suit : N'oubliez pas de remplacer myalarm par l'ID de votre alarme.

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

2.    Vérifiez la sortie. Si le paramètre ActionsEnabled n'est pas défini sur true, activez les actions de l'alarme à l'aide de enable-alarm-actions comme suit : N'oubliez pas de remplacer myalarm par l'ID de votre alarme.

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

Pour vérifier et activer les actions d'une alarme via l'API CloudWatch :

1.    Vérifiez votre configuration actuelle à l'aide de DescribeAlarms.

2.    Si les actions ne sont pas activées pour votre alarme, activez-les à l'aide de EnableAlarmActions.

Vérifier les stratégies de dimensionnement simple et de dimensionnement à étapes pour votre groupe Amazon EC2 Auto Scaling

Pour vérifier les stratégies de mise à l’échelle de votre groupe via la console Amazon EC2 :

1.    Connectez-vous à la console Amazon EC2.

2.    Dans le volet de navigation, sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling).

3.    Dans le volet de contenu, sélectionnez votre groupe Auto Scaling.

4.    Cliquez sur l'onglet Mise à l'échelle automatique.

5.    Notez le type de stratégie (Simple Scaling, Step Scaling ou Target tracking).

Pour vérifier les stratégies de mise à l’échelle via l'interface de ligne de commande AWS, utilisez la commande describe-policies pour l'ID de votre groupe Auto Scaling avec le paramètre --policy-types. La sortie contient la liste des stratégies de chaque type (SimpleScaling, StepScaling ou Target tracking).

Pour vérifier les stratégies de mise à l’échelle via une API, utilisez l'appel DescribePolicies avec le paramètre PolicyTypes. La sortie contient la liste des stratégies de chaque type (SimpleScaling, StepScaling ou Target tracking).

Si une stratégie de mise à l’échelle simple est en vigueur, aucune autre stratégie de mise à l’échelle simple n'est appelée avant que les conditions suivantes ne soient remplies :

  • La stratégie de dimensionnement simple en vigueur est terminée.
  • Le temps de stabilisation pour la stratégie Amazon EC2 Auto Scaling est écoulé. Une stratégie de mise à l’échelle simple respecte le temps de stabilisation spécifié ou de la stratégie Amazon EC2 Auto Scaling par défaut.

Remarque : L'exécution d'une stratégie de mise à l'échelle simple ne bloque pas complètement l'exécution de stratégies de mise à l'échelle à étapes ou de suivi des cibles. Assurez-vous que des stratégies contradictoires ne sont pas appliquées simultanément.

Vérifier les hooks de cycle de vie Auto Scaling dans votre stratégie Amazon EC2 Auto Scaling

Lorsqu'un hook de cycle de vie Auto Scaling est en vigueur, les stratégies de mise à l’échelle simple ne sont pas exécutées. Si vous utilisez une stratégie de mise à l’échelle simple dans votre groupe Auto Scaling, veillez à arrêter tout hook de cycle de vie.

Remarque : Les stratégies de mise à l’échelle à étapes se déclenchent même si un hook de cycle de vie est en cours. Toutefois, les stratégies évoluent lentement car les instances ne démarrent pas leur minuteur de préparation avant la fin du hook de cycle de vie.

Vérifiez que tous les hooks de cycle de vie sont terminés et présentent un résultat CONTINUE ou ABANDON lorsque leur délai d'attente global ou de pulsation a expiré.

Pour vérifier les actions de hook de cycle de vie via la console Amazon EC2 :

1.    Connectez-vous à la console Amazon EC2.

2.    Dans le volet de navigation, sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling).

3.    Dans le volet de contenu, sélectionnez votre groupe Auto Scaling.

4.    Sélectionnez l'onglet Activité , puis faites défiler la page jusqu'à la section Historique des activités .

5.    Vérifiez l'activité des actions de hook de cycle de vie en cours.

6.    Pour connaître la procédure d'arrêt d'un hook de cycle de vie, consultez Exécuter le hook du cycle de vie. Pour exécuter les actions d'un hook de cycle de vie via l'interface de ligne de commande AWS, utilisez la commande complete-lifecycle-action. Pour exécuter les actions d'un hook de cycle de vie via une API, effectuez un appel CompleteLifecycleAction.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?