使用指標數學建立目標追蹤擴展政策 - 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. 將指標數學運算式作為自訂指標規格的一部分儲存在名為 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 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

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

    { "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 地更新為最新版本。