Erstellen einer Skalierungsrichtlinie für Zielnachverfolgung für Application Auto Scaling mit Metrikberechnungen - Application Auto Scaling

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.

Erstellen einer Skalierungsrichtlinie für Zielnachverfolgung für Application Auto Scaling mit Metrikberechnungen

Mithilfe von metrischer Mathematik können Sie mehrere CloudWatch Metriken abfragen und mathematische Ausdrücke verwenden, um neue Zeitreihen auf der Grundlage dieser Metriken zu erstellen. Sie können die resultierenden Zeitreihen in der CloudWatch Konsole visualisieren und sie zu Dashboards hinzufügen. Weitere Informationen zur metrischen Mathematik finden Sie unter Verwenden von metrischer Mathematik im CloudWatch Amazon-Benutzerhandbuch.

Für metrische mathematische Ausdrücke gelten folgende Überlegungen:

  • Sie können jede verfügbare CloudWatch Metrik abfragen. Jede Metrik ist eine eindeutige Kombination aus Metrikname, Namespace und null oder mehr Dimensionen.

  • Sie können einen beliebigen arithmetischen Operator (+ - */^), jede statistische Funktion (wie AVG oder SUM) oder eine andere Funktion verwenden, die diese CloudWatch Funktion unterstützt.

  • Sie können sowohl Metriken als auch die Ergebnisse anderer mathematischer Ausdrücke in den Formeln des mathematischen Ausdrucks verwenden.

  • Alle Ausdrücke, die in einer metrischen Spezifikation verwendet werden, müssen letztendlich eine einzige Zeitreihe ergeben.

  • Sie können überprüfen, ob ein metrischer mathematischer Ausdruck gültig ist, indem Sie die CloudWatch Konsole oder die CloudWatch GetMetricDataAPI verwenden.

Beispiel: Amazon-SQS-Warteschlangenrückstand pro Aufgabe

Um den Rückstand der Amazon SQS-Warteschlange pro Aufgabe zu berechnen, nehmen Sie die ungefähre Anzahl der Nachrichten, die für den Abruf aus der Warteschlange zur Verfügung stehen, und teilen Sie diese Zahl durch die Anzahl der im Service laufenden Amazon ECS-Aufgaben. Weitere Informationen finden Sie im AWS Compute-Blog unter Amazon Elastic Container Service (ECS) Auto Scaling using custom metrics.

Die Logik für den Ausdruck lautet wie folgt:

sum of (number of messages in the queue)/(number of tasks that are currently in the RUNNING state)

Dann lauten Ihre CloudWatch Metrikinformationen wie folgt.

ID CloudWatch metrisch Statistik Intervall
m1 ApproximateNumberOfMessagesVisible Summe 1 Minute
m2 RunningTaskCount Durchschnitt 1 Minute

ID und Ausdruck Ihrer Metrikberechnung lauten wie folgt.

ID Expression
e1 (m1)/(m2)

Das folgende Diagramm veranschaulicht die Architektur dieser Metrik:

Automatisches Skalieren von Anwendungen mithilfe von Warteschlangen (Architekturdiagramm)
So erstellen Sie mithilfe dieser Metrikberechnung eine Skalierungsrichtlinie für die Zielnachverfolgung (AWS CLI)
  1. Speichern Sie den metrischen mathematischen Ausdruck als Teil einer benutzerdefinierten Metrikspezifikation in einer JSON-Datei namens config.json.

    Das folgende Beispiel hilft Ihnen bei den ersten Schritten. Ersetzen Sie jedes Platzhalter für Benutzereingaben durch Ihre eigenen Informationen.

    { "CustomizedMetricSpecification": { "Metrics": [ { "Label": "Get the queue size (the number of messages waiting to be processed)", "Id": "m1", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Get the ECS running task count (the number of currently running tasks)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", "Dimensions": [ { "Name": "ClusterName", "Value": "my-cluster" }, { "Name": "ServiceName", "Value": "my-service" } ] }, "Stat": "Average" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "e1", "Expression": "m1 / m2", "ReturnData": true } ] }, "TargetValue": 100 }

    Weitere Informationen finden Sie TargetTrackingScalingPolicyConfigurationin der API-Referenz für Application Auto Scaling.

    Anmerkung

    Im Folgenden finden Sie einige zusätzliche Ressourcen, die Ihnen bei der Suche nach Metriknamen, Namespaces, Dimensionen und Statistiken für Metriken helfen können: CloudWatch

  2. Um diese Richtlinie zu erstellen, führen Sie den put-scaling-policyBefehl mit der JSON-Datei als Eingabe aus, wie im folgenden Beispiel gezeigt.

    aws application-autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service \ --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration file://config.json

    Bei Erfolg gibt dieser Befehl den Amazon-Ressourcennamen (ARN) der Richtlinie und die ARNs der beiden in Ihrem Namen erstellten CloudWatch Alarme zurück.

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy: 8784a896-b2ba-47a1-b08c-27301cc499a1:resource/ecs/service/my-cluster/my-service:policyName/sqs-backlog-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0", "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4", "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4" } ] }
    Anmerkung

    Wenn dieser Befehl einen Fehler auslöst, stellen Sie sicher, dass Sie die AWS CLI lokale Version auf die neueste Version aktualisiert haben.

Einschränkungen

  • Die maximale Größe der Anfrage ist 50 KB. Dies ist die gesamte Payload-Größe für die PutScalingPolicyAPI-Anfrage, wenn Sie metrische Mathematik in der Richtliniendefinition verwenden. Wenn Sie diese Grenze überschreiten, lehnt Application Auto Scaling die Anfrage ab.

  • Die folgenden Dienste werden bei Verwendung der metrischen Mathematik mit Skalierungsrichtlinien für die Zielverfolgung nicht unterstützt:

    • Amazon Keyspaces (für Apache Cassandra)

    • DynamoDB

    • Amazon EMR

    • Amazon MSK

    • Amazon Neptune