使用指標數學運算建立 Application Auto Scaling 的目標追蹤擴展政策 - Application Auto Scaling

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用指標數學運算建立 Application Auto Scaling 的目標追蹤擴展政策

使用度量數學,您可以查詢多個 CloudWatch 量度,並使用數學運算式根據這些量度建立新的時間序列。您可以在 CloudWatch 主控台中視覺化產生的時間序列,並將其新增至儀表板。如需有關度量數學的詳細資訊,請參閱 Amazon 使用 CloudWatch 者指南中的使用指標數學運算

指標數學運算式有下列考量:

  • 您可以查詢任何可用的 CloudWatch 量度。每個指標都是指標名稱、命名空間以及零個或多個維度的唯一組合。

  • 您可以使用任何算術運算符(+-*/^),統計函數(如 AVG 或 SUM)或其他 CloudWatch 支持的函數。

  • 您可以在數學運算式的公式中同時使用其他數學運算式的指標和結果。

  • 在指標規範中使用的任何運算式都必須最終傳回單一的時間序列。

  • 您可以使用 CloudWatch 主控台或 CloudWatch GetMetricDataAPI 來驗證度量數學運算式是否有效。

範例:每個任務的 Amazon SQS 佇列待辦項目

若要計算每個任務的 Amazon SQS 佇列待辦項目,請獲取佇列中可擷取的大致訊息數量,然後將該數字除以服務中執行的 Amazon ECS 任務數。如需詳細資訊,請參閱 AWS 運算部落格上的 Amazon 彈性容器服務 (ECS) 使用自訂指標自 Auto Scaling

運算式的邏輯如下所示:

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

然後,您的 CloudWatch 指標信息如下。

ID CloudWatch 公制 統計數字 期間
m1 ApproximateNumberOfMessagesVisible 總和 1 分鐘
m2 RunningTaskCount 平均數 1 分鐘

您的指標數學 ID 和表達式如下。

ID 表達式
e1 (m1)/(m2)

下圖說明此測量結果的架構:

使用佇列架構圖 Application Auto Scaling 用程式
使用此指標數學建立目標追蹤擴展政策 (AWS CLI)
  1. 將指標數學運算式作為自訂指標規格的一部分儲存在名為 config.json 的 JSON 檔案中。

    使用以下範例協助您開始使用。將每個使用者輸入預留位置替換為自己的資訊。

    { "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 }

    如需詳細資訊,請參閱應用程TargetTrackingScalingPolicyConfiguration式自動調整規模 API 參考中的。

    注意

    以下是一些其他資源,可協助您尋找測量結果名稱、命名空間、維 CloudWatch 度和統計資料:

    • 如需 AWS 服務可用指標的相關資訊,請參閱 Amazon CloudWatch 使用者指南中的發佈指 CloudWatch 標的AWS 服務

    • 若要取得量度的確切度量名稱、命名空間和維度 (如果適用) AWS CLI,請參閱清單 CloudWatch 量度。

  2. 若要建立此原則,請使用 JSON 檔案作為輸入來執行put-scaling-policy命令,如下列範例所示。

    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

    如果成功,此命令會傳回政策的 Amazon 資源名稱 (ARN) 和代表您建立的兩個 CloudWatch 警示的 ARN。

    { "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" } ] }
    注意

    如果此命令引發錯誤,請確保您已將本 AWS CLI 地更新為最新版本。

限制

  • 要求大小上限為 50 KB。這是您在原則定義中使用量度數學運算時,PutScalingPolicyAPI 要求的總承載大小。如果您超過此限制,Application Auto Scaling 會拒絕要求。

  • 對目標追蹤擴展政策使用指標數學運算時,不支援下列服務:

    • Amazon Keyspaces (適用於 Apache Cassandra)

    • DynamoDB

    • Amazon EMR

    • Amazon MSK

    • Amazon Neptune