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

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

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

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

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

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

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

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

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

例: タスクごとの Amazon SQS キューバックログ

タスクごとの Amazon SQS キューバックログを計算するには、キューからの取得に使用できるメッセージの概数を取得し、その数を、サービスで実行されている Amazon ECS タスクの数で割ります。詳細については、AWS Compute ブログの「カスタムメトリクスを使用する Amazon Elastic Container Service (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 [Average] (平均) 1 分

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

ID 表現
e1 (m1)/(m2)

このメトリクスのアーキテクチャを以下に図で示します。

キューを使用する Application Auto Scaling アーキテクチャ図
この Metric Math を使用してターゲット追跡スケーリングポリシーを作成するには (AWS CLI)
  1. Metric Math の数式を、カスタマイズされたメトリクス仕様の一部として、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 }

    詳細については、Application Auto Scaling API Reference の「TargetTrackingScalingPolicyConfiguration」を参照してください。

    注記

    以下は、CloudWatch メトリクスのメトリクス名、名前空間、ディメンション、および統計を見つけるために役立つ追加のリソースです。

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

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

  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) および 2 つの 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 です。これは、ポリシー定義でメトリクス計算を使用した場合の PutScalingPolicy API リクエストの合計ペイロードサイズです。この制限を超えると、Application Auto Scaling はリクエストを拒否します。

  • ターゲット追跡スケーリングポリシーでメトリクス計算を使用する場合、次のサービスはサポートされません。

    • Amazon Keyspaces (Apache Cassandra 向け)

    • DynamoDB

    • Amazon EMR

    • Amazon MSK

    • Amazon Neptune