Metric Math を使用してターゲット追跡スケーリングポリシーを作成する - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Metric Math を使用してターゲット追跡スケーリングポリシーを作成する

Metric Math を使用すると、複数の CloudWatch メトリクスをクエリし、数式を使用して、これらのメトリクスに基づいて新しい時系列を作成できます。作成された時系列を CloudWatch コンソールで視覚化し、ダッシュボードに追加できます。Metric Math の詳細については、「Amazon ユーザーガイド」の「Metric Math の使用」を参照してください。 CloudWatch

Metric Math の数式には、次の考慮事項が適用されます。

  • 使用可能なメトリクスをクエリできます CloudWatch 。各メトリクスは、メトリクス名、名前空間、0 以上のディメンションの一意の組み合わせです。

  • 任意の算術演算子 (+ - * / ^)、統計関数 ( AVG や などSUM)、または が CloudWatch サポートするその他の関数を使用できます。

  • 数式の関係式では、メトリクスと他の数式の結果の両方を使用できます。

  • メトリクスの指定で使用される数式はすべて、最終的に単一の時系列を返す必要があります。

  • CloudWatch コンソールまたは CloudWatch GetMetricData を使用して、メトリクスの数式が有効であることを確認できますAPI。

注記

、、または を使用する場合にのみ AWS CLI AWS CloudFormation、Metric Math を使用してターゲット追跡スケーリングポリシーを作成できます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 [Average] (平均) 1 分

メトリクス数学 ID と表現は次のとおりです。

ID 表現
e1 (m1)/(m2)

次の図は、このメトリクスのアーキテクチャを示しています。

キューを使用した Amazon EC2 Auto Scaling のアーキテクチャ図
この Metric Math を使用してターゲット追跡スケーリングポリシーを作成するには (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。

    • サービスの利用可能なメトリクスの詳細については、「Amazon ユーザーガイド AWS 」の「メトリクスを発行する のサービス」を参照してください。 AWS CloudWatch CloudWatch

    • を使用してメトリクスの正確な CloudWatch メトリクス名、名前空間、ディメンション (該当する場合) を取得するには AWS CLI、「list-metrics」を参照してください。

  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) と、ユーザーに代わって作成された 2 つの CloudWatch アラームARNsの を返します。

    { "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 ローカルで最新バージョンに更新していることを確認してください。