高解像度のメトリクスを使用してターゲット追跡ポリシーを作成し、迅速に対応する - Amazon EC2 Auto Scaling

高解像度のメトリクスを使用してターゲット追跡ポリシーを作成し、迅速に対応する

ターゲット追跡は、1 分未満間隔で発行される秒レベルのデータポイントを持つ高解像度の CloudWatch メトリクスをサポートします。クライアントサービス API、ライブストリーミングサービス、e コマースウェブサイト、オンデマンドデータ処理など、需要パターンが変動しやすいアプリケーションに対して高解像度の CloudWatch メトリクスを通じて使用率をモニタリングするようにターゲット追跡ポリシーを設定します。キャパシティと需要のマッチングの精度を高めるために、ターゲット追跡では、このきめ細かなモニタリングを使用し、EC2 インスタンスの需要と使用率の変化をより迅速に検出して対応します。

高解像度でメトリクスを発行する方法の詳細については、「Amazon CloudWatch ユーザーガイド」の「カスタムメトリクスをパブリッシュする」を参照してください。高解像度で CPU 使用率などの EC2 メトリクスにアクセスして発行するには、CloudWatch エージェントを使用することをお勧めします。

AWS リージョン

高解像度のメトリクスを使用したターゲット追跡は、AWS GovCloud (US) Regionsを除くすべての AWS リージョンで使用できます。

高解像度のメトリクスを使用したターゲット追跡ポリシーの仕組み

追跡するメトリクスとメトリクスで維持するターゲット値を定義して、ターゲット追跡ポリシーを作成します。高解像度のメトリクスでスケールするには、メトリクスの名前を指定し、ターゲット追跡でこのメトリクスを監視するメトリクス期間を 60 秒未満の値に設定します。現在、サポートされている最小の間隔は 10 秒です。これより短い間隔でメトリクスを発行できます。

注記

60 を超えるメトリクス期間はサポートされていません。

単一の CloudWatch メトリクスにターゲット追跡を設定したり、複数の CloudWatch メトリクスをクエリし、数式を使用して、メトリクスに基づく新しい単一の時系列を作成できます。どちらのオプションでもメトリクス期間を定義できます。

例 1

次の例では、高解像度の CloudWatch メトリクスに基づいてターゲット追跡ポリシーを作成します。メトリクスは、10 秒の解像度で発行されます。期間を定義することで、ターゲット追跡を有効にして、このメトリクスを 10 秒の粒度でモニタリングできます。各ユーザー入力プレースホルダーを独自の情報に置き換えます。

$ cat ~/config.json { "TargetValue": 100.0, "CustomizedMetricSpecification": { "MetricName": "MyHighResolutionMetric", "Namespace": "MyNamespace", "Dimensions": [ { "Name": "MyOptionalDimensionName", "Value": "MyOptionalMetricDimensionValue" } ], "Statistic": "Average", "Unit": "None" "Period": "10 } }
例 2

メトリクス数式を使用して、複数のメトリクスを単一の時系列に結合してスケールできます。メトリクス演算は、既存のメトリクスをインスタンスあたりの平均に変換するために特に役立ちます。ターゲット追跡では、メトリクスが Auto Scaling グループのキャパシティに反比例することを前提としているため、メトリクスの変換は不可欠です。したがって、キャパシティが増加すると、メトリクスはほぼ同じ割合で減少します。

例えば、アプリケーションで処理される保留中のジョブを表すメトリクスがあるとします。メトリクス演算を使用すると、保留中のジョブを Auto Scaling グループの実行キャパシティで割ることができます。Auto Scaling はキャパシティメトリクスを 1 分単位で発行するため、このメトリクスには 1 分未満の間隔の値はありません。このため、高解像度を使用してスケールする場合、キャパシティと保留中のジョブメトリクスの期間が一致しなくなる可能性があります。この不一致を回避するには、FILL 式を使用して、欠落している値を前の 1 分間のタイムスタンプに記録されたキャパシティの数で埋めることをお勧めします。

次の例では、メトリクス演算を使用して、保留中のジョブメトリクスをキャパシティで割ります。期間については、両方のメトリクスを 10 秒で設定します。メトリクスは 1 分間隔で発行されるため、キャパシティメトリクスに FILL 操作を使用しています。

メトリクス演算を使用して複数のメトリクスを変更するには

{ "CustomizedMetricSpecification": { "Metrics": [ { "Label": "Pending jobs to be processed", "Id": "m1", "MetricStat": { "Metric": { "MetricName": "MyPendingJobsMetric", "Namespace": "Custom", }, "Stat": "Sum" "Period": 10 }, "ReturnData": false }, { "Label": "Get the running instance capacity (matching the period to that of the m1)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Average" "Period": 10 }, "ReturnData": false }, { "Label": "Calculate the pending job per capacity (note the use of the FILL expression)", "Id": "e1", "Expression": "m1 / FILL(m2,REPEAT)", "ReturnData": true } ] }, "TargetValue": 100 }

考慮事項

ターゲット追跡と高解像度のメトリクスを使用する場合は、次の点を考慮してください。

  • 望ましくない自動スケーリング結果につながる可能性のあるデータポイントの欠落がないようにするには、CloudWatch メトリクスを指定した期間と同じかそれ以上の解像度で発行する必要があります。

  • ターゲット値を、Auto Scaling グループにおいて維持するインスタンスごとの 1 分あたりのメトリクス値として定義します。メトリクスの期間に基づいて値が増大するメトリクスを使用する場合は、適切なターゲット値を設定することが重要です。例えば、SUM 統計を使用するリクエスト数や保留中のジョブなどのカウントベースのメトリクスは、選択した期間に応じて異なるメトリクス値になります。それでも、1 分あたりの平均に対してターゲットを設定していることを前提にする必要があります。

  • Amazon EC2 Auto Scaling の使用には追加料金はかかりませんが、Amazon EC2 インスタンス、CloudWatch メトリクス、CloudWatch アラームなどのリソースに対しては料金を支払う必要があります。前の例で作成した高解像度アラームの料金は、標準の CloudWatch アラームの料金とは異なります。CloudWatch の料金の詳細については、「Amazon CloudWatch の料金」をご覧ください。

  • ターゲット追跡では、メトリクスが EC2 インスタンスのインスタンスごとの平均使用率を表す必要があります。これを実現するには、ターゲット追跡ポリシー設定の一部としてメトリクス演算オペレーションを使用できます。Auto Scaling グループの実行キャパシティでメトリクスを割ります。単一の時系列の作成に使用するメトリクスごとに、同じメトリクス期間が定義されていることを確認します。これらのメトリクスが異なる間隔で発行される場合は、間隔が大きいメトリクスで FILL 操作を使用して、欠落しているデータポイントを埋めます。