使用指標數學建立目標追蹤擴展政策 - Amazon EC2 Auto Scaling

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

使用指標數學建立目標追蹤擴展政策

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

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

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

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

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

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

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

注意

只有在使用 AWS CLI、 AWS CloudFormation或時,才能使用指標數學運算來建立目標追蹤擴展政策SDK。這項功能在主控台中尚不可用。

範例:每個執行個體的 Amazon SQS 佇列積壓

若要計算每個執行個體的 Amazon SQS 佇列待處理項目,請取得可從佇列擷取的大約訊息數量,然後將該數字除以 Auto Scaling 群組的執行容量,即InService狀態中的執行個體數目。如需詳細資訊,請參閱基於 Amazon 的擴展政策 SQS

運算式的邏輯如下所示:

sum of (number of messages in the queue)/(number of InService instances)

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

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

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

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

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

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

    使用以下範例協助您開始使用。替換每個 user input placeholder 使用您自己的信息。

    { "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 group size (the number of InService instances)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Average" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "e1", "Expression": "m1 / m2", "ReturnData": true } ] }, "TargetValue": 100 }

    如需詳細資訊,請參閱 Amazon EC2 Auto Scaling API 參考TargetTrackingConfiguration中的。

    注意

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

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

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

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

    aws autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

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

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/sqs-backlog-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }
    注意

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