Erweiterte prädiktive Skalierungsrichtlinie mit benutzerdefinierten Metriken für Amazon ECS - Amazon Elastic Container Service

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.

Erweiterte prädiktive Skalierungsrichtlinie mit benutzerdefinierten Metriken für Amazon ECS

Sie können vordefinierte oder benutzerdefinierte Metriken in einer prädiktiven Skalierungsrichtlinie verwenden. Benutzerdefinierte Metriken sind nützlich, wenn die vordefinierten Metriken (wie CPU, Arbeitsspeicher usw.) nicht ausreichen, um Ihre Anwendungslast ausreichend zu beschreiben.

Wenn Sie eine Richtlinie für vorausschauende Skalierung mit benutzerdefinierten Metriken erstellen, können Sie andere CloudWatch Metriken angeben, die von AWS bereitgestellt werden. Alternativ können Sie Metriken angeben, die Sie selbst definieren und veröffentlichen. Sie können auch metrische Mathematik verwenden, um bestehende Metriken zu aggregieren und in eine neue Zeitreihe umzuwandeln, die AWS nicht automatisch erfasst wird. Ein Beispiel ist das Kombinieren von Werten in Ihren Daten durch die Berechnung neuer Summen oder Durchschnittswerte, das so genannte Aggregieren. Die resultierenden Daten werden als Aggregat bezeichnet.

Der folgende Abschnitt enthält bewährte Verfahren und Beispiele für die Erstellung der JSON-Struktur für die Richtlinie.

Voraussetzungen

Um benutzerdefinierte Metriken zu Ihrer prädiktiven Skalierungsrichtlinie hinzuzufügen, müssen Sie über entsprechende cloudwatch:GetMetricData-Berechtigungen verfügen.

Wenn Sie Ihre eigenen Metriken anstelle der bereitgestellten Metriken angeben möchten, müssen Sie Ihre Metriken zunächst auf CloudWatch veröffentlichen. AWS Weitere Informationen finden Sie unter Veröffentlichen benutzerdefinierter Metriken im CloudWatch Amazon-Benutzerhandbuch.

Sollten Sie Ihre eigenen Metriken veröffentlichen, achten Sie darauf, dass Sie die Datenpunkte mindestens alle fünf Minuten veröffentlichen. Datenpunkte werden CloudWatch basierend auf der Länge des benötigten Zeitraums abgerufen. Beispielsweise verwendet die Lastmetrikspezifikation stündliche Metriken, um die Auslastung Ihrer Anwendung zu messen. CloudWatch verwendet Ihre veröffentlichten Metrikdaten, um einen einzelnen Datenwert für einen beliebigen Zeitraum von einer Stunde bereitzustellen, indem alle Datenpunkte mit Zeitstempeln aggregiert werden, die in jeden Zeitraum von einer Stunde fallen.

Bewährte Methoden

Die folgenden bewährten Methoden können Ihnen helfen, benutzerdefinierte Metriken effektiver zu nutzen:

  • Die nützlichste Metrik für die Lastmetrikspezifikation ist eine Metrik, die die Last einer Auto Scaling Scaling-Gruppe als Ganzes darstellt.

  • Die nützlichste Metrik für die Skalierungsmetrikspezifikation zur Skalierung ist der durchschnittliche Durchsatz oder die Auslastung pro Aufgabe.

  • Die Zielauslastung muss mit der Art der Skalierungsmetrik übereinstimmen. Für eine Richtlinienkonfiguration, die die CPU-Auslastung verwendet, ist dies beispielsweise ein Zielprozentsatz.

  • Wenn diese Empfehlungen nicht befolgt werden, werden die prognostizierten zukünftigen Werte der Zeitreihen wahrscheinlich falsch sein. Um zu überprüfen, ob die Daten korrekt sind, können Sie sich die prognostizierten Werte in der Konsole ansehen. Alternativ können Sie nach der Erstellung Ihrer Richtlinie für vorausschauende Skalierung die LoadForecast Objekte überprüfen, die GetPredictiveScalingForecastdurch einen API-Aufruf zurückgegeben wurden.

  • Es wird dringend empfohlen, die prädiktive Skalierung im Modus „Nur Prognose“ zu konfigurieren, damit Sie die Prognose auswerten können, bevor die vorausschauende Skalierung aktiv mit der Skalierung beginnt.

Einschränkungen

  • Sie können Datenpunkte von bis zu 10 Metriken in einer Metrikspezifikation abfragen.

  • Für die Zwecke dieses Limits zählt ein Ausdruck als eine Metrik.

Fehlerbehebung bei einer Richtlinie zur prädiktiven Skalierung mit benutzerdefinierten Metriken

Wenn bei der Verwendung von benutzerdefinierten Metriken ein Problem auftritt, empfehlen wir Ihnen, wie folgt vorzugehen:

  • Wenn Sie bei der Verwendung eines Suchausdrucks in einer blauen/grünen Bereitstellung auf ein Problem stoßen, stellen Sie sicher, dass Sie einen Suchausdruck erstellt haben, der nach einer teilweisen und nicht nach einer exakten Übereinstimmung sucht. Sie sollten auch überprüfen, ob die Abfrage nur Auto Scaling Scaling-Gruppen findet, die in der jeweiligen Anwendung ausgeführt werden. Weitere Informationen zur Syntax von Suchausdrücken finden Sie unter Syntax von CloudWatch Suchausdrücken im CloudWatch Amazon-Benutzerhandbuch.

  • Der put-scaling-policyBefehl validiert einen Ausdruck, wenn Sie Ihre Skalierungsrichtlinie erstellen. Es besteht jedoch die Möglichkeit, dass dieser Befehl die genaue Ursache der erkannten Fehler nicht identifiziert. Um die Probleme zu beheben, beheben Sie die Fehler, die Sie als Antwort auf eine Anfrage an den get-metric-dataBefehl erhalten. Sie können den Ausdruck auch von der CloudWatch Konsole aus beheben.

  • Sie müssen false für ReturnData angeben, wenn MetricDataQueries die Funktion SEARCH() allein ohne eine mathematische Funktion wie SUM() angibt. Das liegt daran, dass Suchausdrücke mehrere Zeitreihen zurückgeben können, während eine auf einem Ausdruck basierende Metrikspezifikation nur eine Zeitreihe zurückgeben kann.

  • Alle an einem Suchausdruck beteiligten Metriken sollten die gleiche Auflösung haben.

Beispiel für eine prädiktive Skalierungspolitik, die Metriken mit metrischer Mathematik kombiniert (AWS CLI)

Manchmal müssen Sie die Metrik nicht direkt angeben, sondern die Daten erst auf irgendeine Weise verarbeiten. Sie könnten zum Beispiel eine Anwendung haben, die Arbeit aus einer Amazon SQS-Warteschlange abruft, und Sie könnten die Anzahl der Objekte in der Warteschlange als Kriterium für die prädiktive Skalierung verwenden wollen. Die Anzahl der Nachrichten in der Warteschlange bestimmt nicht allein die Anzahl der Instances, die Sie benötigen. Daher ist weitere Arbeit erforderlich, um eine Metrik zu erstellen, die zur Berechnung des Rückstands pro Instance verwendet werden kann.

Im Folgenden finden Sie ein Beispiel für eine prädiktive Skalierungsrichtlinie für dieses Szenario. Sie legt Skalierungs- und Auslastungsmetriken fest, die auf der Amazon SQS ApproximateNumberOfMessagesVisible-Metrik basieren, d.h. der Anzahl der Nachrichten, die für den Abruf aus der Warteschlange verfügbar sind. Es verwendet auch die Amazon EC2 Auto GroupInServiceInstances Scaling-Metrik und einen mathematischen Ausdruck, um den Backlog pro Instance für die Skalierungsmetrik zu berechnen.

aws application-autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \ --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json --service-namespace ecs \ --resource-id service/MyCluster/test \ "MetricSpecifications": [ { "TargetValue": 100, "CustomizedScalingMetricSpecification": { "MetricDataQueries": [ { "Label": "Get the queue size (the number of messages waiting to be processed)", "Id": "queue_size", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Get the group size (the number of running instances)", "Id": "running_capacity", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "scaling_metric", "Expression": "queue_size / running_capacity", "ReturnData": true } ] }, "CustomizedLoadMetricSpecification": { "MetricDataQueries": [ { "Id": "load_metric", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ], }, "Stat": "Sum" }, "ReturnData": true } ] } } ] }

Das Beispiel gibt den ARN der Richtlinie zurück.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy", "Alarms": [] }