Warum wird meine Amazon EC2 Auto Scaling-Richtlinie nicht ausgelöst, wenn mein CloudWatch-Alarm den Status ändert?

Lesedauer: 6 Minute
0

Ich habe einen Amazon CloudWatch-Alarm konfiguriert, um meine Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling-Richtlinie auszulösen. Warum wird meine Amazon EC2 Auto Scaling-Richtlinie nicht ausgelöst, wenn mein CloudWatch-Alarm den Status ändert?

Kurzbeschreibung

Wenn ein CloudWatch-Alarm in einen neuen Alarmstatus übergeht (OK, ALARM oder INSUFFICIENT_DATA), ruft der Alarm alle konfigurierten Aktionen für diesen Status auf. Amazon EC2 Auto Scaling verwendet nur den für den Alarm konfigurierten Zeitraum, um festzustellen, ob sich der Status ändern sollte. Bei Auto Scaling-Aktionen ruft der Alarm also weiterhin die konfigurierte Aktion für jede Minute auf, in der der Alarm im neuen Status verbleibt, unabhängig vom konfigurierten Zeitraum.

Zu den häufigsten Gründen, warum eine Änderung des CloudWatch-Alarmstatus keine Amazon EC2 Auto Scaling-Richtlinie auslöst, gehören:

  • Die Auto Scaling-Aktion ist für den CloudWatch-Alarm nicht aktiviert, wodurch verhindert wird, dass die Skalierungsrichtlinie aufgerufen wird.
  • Die Skalierungsrichtlinie in der Auto-Scaling-Gruppe ist deaktiviert. Eine deaktivierte Richtlinie verhindert, dass die Gruppe bewertet wird.
  • Die Auto-Scaling-Gruppe hat widersprüchliche einfache Skalierungsrichtlinien oder Richtlinien zur schrittweisen Skalierung, wodurch verhindert wird, dass einige der Richtlinien ausgelöst werden.
  • Die Auto-Scaling-Gruppe hat einen unvollständigen Lebenszyklus-Hook, der verhindert, dass alle einfachen Skalierungsrichtlinien angewendet werden. Eine ausstehende Instance führt ebenfalls zu Verzögerungen bei den schrittweise und Zielverfolgungs-Skalierungsrichtlinien. Das liegt daran, dass Auto Scaling die Instance erst dann auf die Kapazität der Gruppe anrechnet, wenn der Lebenszyklus-Hook abgeschlossen ist und die Aufwärmzeit abgeschlossen ist (für die Aufskalierung). Die Instance wird weiterhin auf die Kapazität der Gruppe angerechnet (zur Abskalierung), um eine übermäßige Skalierung zu verhindern. Der Lebenszyklus-Hook wird abgeschlossen, wenn ein Timeout auftritt oder wenn ein Aufruf der CompleteLifecycleAction-API oder der AWS Command Lebenszyklus Instance (AWS CLI) erfolgt.

Lösung

Bevor Sie beginnen, stellen Sie sicher, dass Ihr CloudWatch-Alarm in den Status ALARM übergeht. Wenn die Konfiguration eines Alarms nicht dem Schwellenwert der Messgröße entspricht, die er überwacht, wechselt der Alarm möglicherweise nicht in den Status ALARM. Wenn ein Alarm seinen Status nicht ändert, löst er keine Amazon EC2 Auto Scaling-Richtlinien aus. Weitere Informationen zur Bewertung von CloudWatch-Alarmen finden Sie unter Bewertung eines Alarms.

Stellen Sie sicher, dass Ihr CloudWatch-Alarm erwartungsgemäß in den ALARM-Status wechselt, indem Sie den Schwellenwert des Alarms überprüfen. Erhöhen oder verringern Sie den Schwellenwert, bis er Ihrem erwarteten Wert entspricht. Überprüfen Sie auch den Zeitraum und den Evaluierungszeitraum des Alarms. Möglicherweise müssen Sie Ihren Alarmzeitraum und den Evaluierungszeitraum bearbeiten, damit Ihre Amazon EC2 Auto Scaling-Richtlinie wie erwartet ausgelöst wird. Weitere Informationen darüber, wie Sie sicherstellen können, dass Ihr Alarm Aktionen auslöst, finden Sie unter Wie kann ich sicher sein, dass CloudWatch-Alarme Aktionen auslösen?.

Wichtig: Beachten Sie beim Erstellen oder Bearbeiten von Alarmen die folgenden Punkte:

  • Stellen Sie sicher, dass Sie die Skalierungsprozesse (AlarmNotification, Launch oder Terminate) für Ihre Amazon EC2 Auto Scaling-Gruppe nicht unterbrochen haben. Stellen Sie sicher, dass Sie diese Skalierungsprozesse fortsetzen, falls sie unterbrochen wurden.
  • Bearbeiten Sie niemals direkt die Alarme, die den Richtlinien zur Zielverfolgung zugeordnet sind. Die Bearbeitung dieser Alarme kann zu unbeabsichtigten Auswirkungen führen. Der Schwellenwert dieser Alarme wird automatisch auf der Grundlage des in der Skalierungsrichtlinie festgelegten Zielwerts bestimmt.

Prüfen Sie, ob die Amazon EC2 Auto Scaling-Aktionen für den CloudWatch-Alarm aktiviert sind

Damit ein CloudWatch-Alarm eine Amazon EC2 Auto Scaling-Richtlinie aufruft, muss der Parameter ActionsEnabled in der Konfiguration des Alarms aktiviert sein. Vergewissern Sie sich, dass der Parameter ActionsEnabled in der Konfiguration Ihres Alarms auf true gesetzt ist.

Hinweis: Wenn Sie Ihren Alarm mithilfe der CloudWatch-Konsole erstellen oder aktualisieren, ist der Parameter ActionsEnabled standardmäßig auf true gesetzt.

Um Alarmaktionen mit der AWS-CLI zu überprüfen und zu aktivieren:

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten,stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

1.Überprüfen Sie Ihre aktuelle Konfiguration mithilfe von describe-alarms wie folgt. Achten Sie darauf, myalarm durch die ID Ihres Alarms zu ersetzen.

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

2.Überprüfen Sie die Ausgabe. Wenn der Parameter ActionsEnabled nicht auf true gesetzt ist, aktivieren Sie Alarmaktionen mithilfe von enable-alarm-actions wie folgt. Achten Sie darauf, myalarm durch die ID Ihres Alarms zu ersetzen.

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

So überprüfen und aktivieren Sie Alarmaktionen mithilfe der CloudWatch-API:

1.Überprüfen Sie Ihre aktuelle Konfiguration mit DescribeAlarms.

2.Wenn Aktionen für Ihren Alarm nicht aktiviert sind, aktivieren Sie diese mit EnableAlarmActions.

Überprüfen Sie die Richtlinien für einfache Skalierung und schrittweise Skalierung für Ihre Amazon EC2 Auto Scaling-Gruppe

So überprüfen Sie die Skalierungsrichtlinien Ihrer Gruppe mithilfe der Amazon EC2-Konsole:

1.Melden Sie sich bei der Amazon EC2-Konsole an.

2.Wählen Sie im Navigationsbereich unter Auto Scaling die Option Auto-Scaling-Gruppen aus.

3.Wählen Sie im Inhaltsbereich Ihre Auto-Scaling-Gruppe aus.

4.Wählen Sie die Registerkarte Automatische Skalierung aus.

5.Notieren Sie sich den Richtlinientyp (Schrittweise Skalierung, Einfache Skalierung oder Zielverfolgung).

Um die Skalierungsrichtlinien mithilfe der AWS-CLI zu überprüfen, verwenden Sie den Befehl describe-policies für die ID Ihrer Auto-Scaling-Gruppe mit dem Parameter --policy-types. In der Ausgabe werden die Richtlinien der einzelnen Typen aufgeführt (SimpleScaling, StepScaling oder Target-Tracking).

Um Skalierungsrichtlinien mithilfe einer API zu überprüfen, verwenden Sie den Aufruf DescribePolicies mit dem Parameter PolicyTypes. In der Ausgabe werden die Richtlinien der einzelnen Typen aufgeführt (SimpleScaling, StepScaling oder Target-Tracking).

Wenn Sie eine einfache Skalierungsrichtlinie in Kraft haben, werden alle anderen einfachen Skalierungsrichtlinien erst aufgerufen, wenn die folgenden Bedingungen erfüllt sind:

  • Die derzeit geltende einfache Skalierungsrichtlinie ist abgeschlossen.
  • Die Ruhephase für die Amazon EC2 Auto Scaling-Richtlinie ist abgelaufen. Eine einfache Skalierungsrichtlinie berücksichtigt die standardmäßige oder festgelegte Ruhephase der Amazon EC2 Auto Scaling-Richtlinie.

Hinweis: Die Ausführung einer einfachen Skalierungsrichtlinie blockiert die Ausführung von Richtlinien zur schrittweisen Skalierung oder zur Zielverfolgung nicht vollständig. Stellen Sie sicher, dass widersprüchliche Richtlinien nicht gleichzeitig angewendet werden.

Suchen Sie in Ihrer Amazon EC2 Auto Scaling-Richtlinie nach Auto-Scaling-Lebenszyklus-Hooks

Wenn ein Auto-Scaling-Lebenszyklus-Hook in Kraft ist, werden einfache Skalierungsrichtlinien nicht ausgeführt. Wenn Sie in Ihrer Auto-Scaling-Gruppe eine einfache Skalierungsrichtlinie verwenden, achten Sie darauf, alle Lebenszyklus-Hooks zu beenden.

Hinweis: Richtlinien zur schrittweisen Skalierung werden auch dann weiterhin ausgelöst, wenn gerade ein Lebenszyklus-Hook ausgeführt wird. Die Richtlinien werden jedoch langsam skaliert, da die Instances ihren Warmup-Timer erst starten, wenn der Lebenszyklus-Hook endet.

Stellen Sie sicher, dass alle Lebenszyklus-Hooks abgeschlossen sind und das Ergebnis CONTINUE oder ABANDON ist, nachdem ihre globalen Timeout-Zeiträume oder Heartbeat-Timeout-Zeiträume abgelaufen sind.

Um mithilfe der Amazon EC2-Konsole nach Lebenszyklus-Hook-Aktionen zu suchen, gehen Sie wie folgt vor:

1.Melden Sie sich bei der Amazon EC2-Konsole an.

2.Wählen Sie im Navigationsbereich unter Auto Scaling die Option Auto-Scaling-Gruppen aus.

3.Wählen Sie im Inhaltsbereich Ihre Auto-Scaling-Gruppe aus.

4.Wählen Sie die Registerkarte Aktivität aus und scrollen Sie dann zum Abschnitt Aktivitätsverlauf.

5.Überprüfen Sie die Aktivität für alle laufenden Lebenszyklus-Hook-Aktionen.

6.Schritte zum Beenden eines Lebenszyklus-Hooks finden Sie unter Abschluss des Lebenszyklus-Hooks. Verwenden Sie den Befehl complete-lifecycle-action, um Lebenszyklus-Hook-Aktionen mithilfe der AWS-CLI abzuschließen. Führen Sie einen CompleteLifecycleAction -Aufruf durch, um Lebenszyklus-Hook-Aktionen mithilfe einer API abzuschließen.


Ähnliche Informationen

Wie behebe ich Skalierungsprobleme mit meiner Amazon EC2 Auto Scaling-Gruppe?

Problembehandlung bei Amazon EC2 Auto Scaling

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren