Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Wie CloudWatch Alarme erkennen Fehler bei der Amazon ECS-Bereitstellung
Sie können Amazon ECS so konfigurieren, dass die Bereitstellung auf fehlgeschlagen gesetzt wird, wenn festgestellt wird, dass ein bestimmtes CloudWatch Es wurde ein Alarm ausgelöst ALARM Staat.
Sie können die Konfiguration optional so einrichten, dass eine fehlgeschlagene Bereitstellung auf die zuletzt abgeschlossene Bereitstellung zurückgesetzt wird.
Folgendes create-service AWS CLI Das Beispiel zeigt, wie ein Linux-Dienst erstellt wird, wenn die Bereitstellungsalarme zusammen mit der Rollback-Option verwendet werden.
aws ecs create-service \ --service-nameMyService\ --deployment-controller type=ECS\ --desired-count3\ --deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \ --task-definitionsample-fargate:1\ --launch-typeFARGATE\ --platform-familyLINUX\ --platform-version1.4.0\ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"
Beachten Sie Folgendes, wenn Sie Amazon verwenden CloudWatch Alarm-Methode für einen Dienst.
-
Die Dauer, in der sowohl blaue als auch grüne Service-Revisionen gleichzeitig ausgeführt werden, nachdem der Produktionsdatenverkehr verlagert wurde. Amazon ECS berechnet diesen Zeitraum basierend auf der Alarmkonfiguration, die der Bereitstellung zugeordnet ist. Sie können diesen Wert nicht einstellen.
-
Der
deploymentConfiguration-Anfrageparameter enthält jetzt denalarms-Datentyp. Sie können die Alarmnamen angeben, festlegen, ob die Methode verwendet werden soll und ob ein Rollback initiiert werden soll, wenn die Alarme einen Bereitstellungsfehler anzeigen. Weitere Informationen finden Sie unter CreateService in der Amazon Elastic Container Service API-Referenz. -
Die
DescribeServices-Antwort bietet Einblick in den Status einer Bereitstellung, denrolloutStateundrolloutStateReason. Wenn eine neue Bereitstellung gestartet wird, beginnt der Rollout-Status in einemIN_PROGRESS-Status. Wenn der Service einen stabilen Status erreicht und die Bake-Zeit abgeschlossen ist, wechselt der Rollout-Status zuCOMPLETED. Wenn der Service keinen stabilen Status erreicht und der Alarm in denALARM-Status übergegangen ist, wechselt die Bereitstellung in einenFAILED-Status. Eine Bereitstellung in einemFAILED-Status startet keine neuen Aufgaben. -
Zusätzlich zu den Ereignissen zur Statusänderung der Service-Bereitstellung, die Amazon ECS für gestartete und abgeschlossene Bereitstellungen sendet, sendet Amazon ECS auch ein Ereignis, wenn eine Bereitstellung mit aktiviertem Alarmen fehlschlägt. Diese Ereignisse enthalten Details dazu, warum eine Bereitstellung fehlgeschlagen ist oder ob eine Bereitstellung aufgrund eines Rollbacks gestartet wurde. Weitere Informationen finden Sie unter Statussänderungs-Ereignisse der Amazon-ECS-Servicebereitstellung.
-
Wenn eine neue Bereitstellung gestartet wird, weil eine vorherige Bereitstellung fehlgeschlagen ist und ein Rollback aufgetreten ist, zeigt das
reason-Feld des Ereignisses für die Statusänderung der Service-Bereitstellung an, dass die Bereitstellung aufgrund eines Rollbacks gestartet wurde. -
Wenn Sie den Leistungsschalter und den Amazon verwenden CloudWatch Alarme zur Erkennung von Ausfällen. Beide können einen Bereitstellungsfehler auslösen, sobald die Kriterien für eine der beiden Methoden erfüllt sind. Ein Rollback erfolgt, wenn Sie die Rollback-Option für die Methode verwenden, die den Bereitstellungsfehler ausgelöst hat.
-
Der Amazonas CloudWatch Alarms wird nur für Amazon ECS-Dienste unterstützt, die das fortlaufende Update verwenden (
ECS) Bereitstellungscontroller. -
Sie können diese Option mithilfe der Amazon-ECS-Konsole oder der AWS CLI konfigurieren. Weitere Informationen finden Sie unter Erstellen eines Services mit definierten Parametern und create-service in der AWS Command Line Interface -Referenz.
-
Möglicherweise stellen Sie fest, dass der Bereitstellungsstatus über einen längeren Zeitraum
IN_PROGRESSbleibt. Der Grund dafür ist, dass Amazon ECS den Status erst ändert, wenn die aktive Bereitstellung gelöscht wurde. Dies geschieht erst nach der Bake-Zeit. Abhängig von Ihrer Alarmkonfiguration scheint die Bereitstellung möglicherweise einige Minuten länger zu dauern als ohne Verwendung von Alarmen (obwohl der neue primäre Aufgabensatz hochskaliert und die alte Bereitstellung herunterskaliert wird). Wenn Sie verwenden CloudFormation Timeouts, erwägen Sie, die Timeouts zu erhöhen. Weitere Informationen finden Sie unter Erstellen von Wartebedingungen in einer Vorlage im AWS CloudFormation -Benutzerhandbuch. -
Amazon ECS ruft
DescribeAlarmsauf, um die Alarme abzufragen. Die Anrufe anDescribeAlarmszähle bis zum CloudWatch Ihrem Konto zugeordnete Servicekontingente. Wenn Sie andere haben AWS Dienste, die anrufenDescribeAlarms, es könnte Auswirkungen darauf haben, dass Amazon ECS die Alarme abfragt. Wenn beispielsweise ein anderer Service genügendDescribeAlarms-Aufrufe tätigt, um das Kontingent zu erreichen, wird dieser Service gedrosselt. Amazon ECS wird ebenfalls gedrosselt und kann keine Alarme abrufen. Wenn während des Drosselungszeitraums ein Alarm generiert wird, übersieht Amazon ECS möglicherweise den Alarm und der Rollback findet nicht statt. Es gibt keine weiteren Auswirkungen auf die Bereitstellung. Weitere Informationen finden Sie unter CloudWatch Servicekontingente finden Sie unter CloudWatch Servicekontingente in der CloudWatch Benutzerleitfaden. -
Wenn sich ein Alarm zu Beginn einer Bereitstellung im Status
ALARMbefindet, überwacht Amazon ECS keine Alarme für die Dauer dieser Bereitstellung (Amazon ECS ignoriert die Alarmkonfiguration). Dieses Verhalten behandelt den Fall, in dem Sie eine neue Bereitstellung starten möchten, um einen anfänglichen Bereitstellungsfehler zu beheben.
Empfohlene Alarme
Wir empfehlen die Verwendung der folgenden Alarmmetriken:
-
Wenn Sie einen Application Load Balancer verwenden, verwenden Sie die Application-Load-Balancer-Metriken
HTTPCode_ELB_5XX_CountundHTTPCode_ELB_4XX_Count. Diese Metriken überprüfen, ob HTTP-Spitzen vorliegen. Weitere Informationen zu den Application Load Balancer-Metriken finden Sie unter CloudWatch Metriken für Ihren Application Load Balancer in der Benutzerhandbuch für Application Load Balancer. -
Verwenden Sie bei einer vorhandenen Anwendung die
CPUUtilization- undMemoryUtilization-Metriken. Diese Metriken überprüfen den Prozentsatz von CPU und Arbeitsspeicher, den der Cluster oder Service verwendet. Weitere Informationen finden Sie unter Überlegungen. -
Wenn du verwendest Amazon Simple Queue Service Warteschlangen in Ihren Aufgaben, verwenden Sie
ApproximateNumberOfMessagesNotVisibleAmazon SQS-Metrik. Diese Metrik prüft die Anzahl der Mitteilungen in der Warteschlange, die verzögert und nicht sofort zum Lesen verfügbar sind. Weitere Informationen zu Amazon SQS-Metriken finden Sie unter Verfügbar CloudWatch Metriken für Amazon SQS in der Amazon Simple Queue Service — Entwicklerhandbuch.
Bake time (Bake-Zeit)
Wenn Sie die Rollback-Option für Ihre Servicebereitstellungen verwenden, wartet Amazon ECS nach der Bereitstellung der Zielservice-Revision eine zusätzliche Zeit, bevor es eine CloudWatch Alarm. Dies wird als Bake-Zeit bezeichnet. Diese Zeit beginnt nachdem:
-
Alle Aufgaben für eine Ziel-Service-Revision werden ausgeführt und befinden sich in einem fehlerfreien Zustand.
-
Die Revisionen des Quell-Services auf 0 % herunterskaliert wurden
Die standardmäßige Bake-Zeit weniger als 5 Minuten beträgt. Die Servicebereitstellung nach Ablauf der Bake-Zeit als abgeschlossen markiert wird.
Sie können die Bake-Zeit für eine fortlaufende Bereitstellung konfigurieren. Wenn du benutzt CloudWatch Alarme zur Erkennung von Fehlern. Wenn Sie die Backzeit ändern und dann entscheiden, dass Sie die Amazon ECS-Standardeinstellung verwenden möchten, müssen Sie die Backzeit manuell festlegen.