翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Metric Math 式を使用する
以下のセクションには、ポリシーでメトリクス計算を使用する方法を説明する予測スケーリングポリシーの情報と例が記載されています。
トピック
Metric Math について
既存のメトリクスデータの集計だけを行いたい場合は、CloudWatch Metric Math により、別のメトリクスを CloudWatch に発行する手間とコストを節約できます。 AWS が提供する任意のメトリクスを使用できます。また、アプリケーションの一部として定義したメトリクスを使用することもできます。
詳細については、「Amazon CloudWatch ユーザーガイド」の「Amazon CloudWatch メトリクス数学の使用」を参照してください。
予測スケーリングポリシーで Metric Math の数式を使用する場合は、次の点を考慮してください。
-
Metric Math 演算では、メトリクスのメトリクス名、名前空間、ディメンションのキーと値のペアの一意の組み合わせのデータポイントを使用します。
-
任意の算術演算子 (+ - * / ^)、統計関数 (AVG や SUM など)、または CloudWatch がサポートするその他の関数を使用できます。
-
数式の関係式では、メトリクスと他の数式の結果の両方を使用できます。
-
Metric Math の数式は、さまざまな集計で構成できます。ただし、最終的な集計結果として、
Averageをスケーリングメトリクスに使用し、Sumを負荷メトリクスに使用するのがベストプラクティスです。 -
メトリクスの指定で使用される数式はすべて、最終的に単一の時系列を返す必要があります。
Metric Math を使用するには、次の操作を実行します。
-
1 つまたは複数の CloudWatch メトリクスを選択します。次に、数式を作成します。詳細については、「Amazon CloudWatch ユーザーガイド」の「Amazon CloudWatch メトリクス数学の使用」を参照してください。
-
CloudWatch コンソールまたは CloudWatch GetMetricData API を使用して、Metric Math の数式が有効であることを確認します。
メトリクス数式を使用してメトリクスを組み合わせた Amazon EC2 Auto Scaling の予測スケーリングポリシーの例 (AWS CLI)
場合によっては、メトリクスを直接指定するのではなく、まず何らかの方法でそのデータを処理する必要がある場合があります。例えば、Amazon SQS キューから作業を取り出すアプリケーションがあり、キュー内の項目数を予測スケーリングの基準として使用したいとします。キューにあるメッセージの数だけでは、必要なインスタンスの数は定義されません。インスタンスごとのバックログを計算するために使用できるメトリクスを作成するには、さらに多くの作業が必要です。
このシナリオの予測スケーリングポリシー例を次に示します。Amazon SQS ApproximateNumberOfMessagesVisible メトリクス (キューから取得可能なメッセージの数) に基づくスケーリングメトリクスおよび負荷メトリクスを指定します。Amazon EC2 Auto Scaling GroupInServiceInstances メトリクスと、スケーリングメトリクスのインスタンスごとのバックログを計算するための数式も使用します。
aws autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \
--auto-scaling-group-name my-asg --policy-type PredictiveScaling \
--predictive-scaling-configuration file://config.json
{
"MetricSpecifications": [
{
"TargetValue": 100,
"CustomizedScalingMetricSpecification": {
"MetricDataQueries": [
{
"Label": "Get the queue size (the number of messages waiting to be processed)",
"Id": "queue_size",
"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 running instances)",
"Id": "running_capacity",
"MetricStat": {
"Metric": {
"MetricName": "GroupInServiceInstances",
"Namespace": "AWS/AutoScaling",
"Dimensions": [
{
"Name": "AutoScalingGroupName",
"Value": "my-asg"
}
]
},
"Stat": "Sum"
},
"ReturnData": false
},
{
"Label": "Calculate the backlog per instance",
"Id": "scaling_metric",
"Expression": "queue_size / running_capacity",
"ReturnData": true
}
]
},
"CustomizedLoadMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_metric",
"MetricStat": {
"Metric": {
"MetricName": "ApproximateNumberOfMessagesVisible",
"Namespace": "AWS/SQS",
"Dimensions": [
{
"Name": "QueueName",
"Value": "my-queue"
}
],
},
"Stat": "Sum"
},
"ReturnData": true
}
]
}
}
]
}
この例では、ポリシーの ARN が返されます。
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy",
"Alarms": []
}
ブルー/グリーンデプロイシナリオで使用する予測スケーリングのポリシーの例 (AWS CLI)
検索式は、複数の Amazon EC2 Auto Scaling グループからメトリクスをクエリし、それらの数式を実行する高度なオプションを提供します。これは、Blue/Green デプロイで特に有用です。
注記
Blue/Green デプロイは、2 つの異なる同一の Amazon EC2 Auto Scaling グループを作成するデプロイ方法です。本番トラフィックを受信するグループは 1 つだけです。ユーザートラフィックは、最初は以前の (「青」) Amazon EC2 Auto Scaling グループに転送され、新しいグループ (「緑」) はアプリケーションまたはサービスの新しいバージョンのテストと評価に使用されます。新しいデプロイがテストされて受け入れられると、ユーザートラフィックはグリーン Amazon EC2 Auto Scaling グループに移行されます。デプロイが成功したら、青のグループを削除できます。
ブルー/グリーンデプロイの一部として新しい Amazon EC2 Auto Scaling グループが作成されると、メトリクスの仕様を変更することなく、各グループのメトリクス履歴を予測スケーリングポリシーに自動的に含めることができます。詳細については、 AWS コンピューティングブログの「ブルー/グリーンデプロイでの EC2 Auto Scaling 予測スケーリングポリシーの使用
次のポリシー例で、これをどのように実行できるかを示します。この例では、ポリシーで、Amazon EC2 が出力する CPUUtilization メトリクスを使用します。Amazon EC2 Auto Scaling GroupInServiceInstances メトリクスとインスタンスごとのスケーリングメトリクスの値を計算するための数式を使用します。また、キャパシティーメトリック仕様を指定して、GroupInServiceInstances メトリクスを取得します。
検索式は、指定された検索条件に基づいて、複数の Amazon EC2 Auto Scaling グループのインスタンスCPUUtilizationの を検索します。後で同じ検索条件に一致する新しい Amazon EC2 Auto Scaling グループを作成すると、新しい Amazon EC2 Auto Scaling グループ内のインスタンスCPUUtilizationの が自動的に含まれます。
aws autoscaling put-scaling-policy --policy-name my-blue-green-predictive-scaling-policy \
--auto-scaling-group-name my-asg --policy-type PredictiveScaling \
--predictive-scaling-configuration file://config.json
{
"MetricSpecifications": [
{
"TargetValue": 25,
"CustomizedScalingMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_sum",
"Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 300))",
"ReturnData": false
},
{
"Id": "capacity_sum",
"Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))",
"ReturnData": false
},
{
"Id": "weighted_average",
"Expression": "load_sum / capacity_sum",
"ReturnData": true
}
]
},
"CustomizedLoadMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_sum",
"Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 3600))"
}
]
},
"CustomizedCapacityMetricSpecification": {
"MetricDataQueries": [
{
"Id": "capacity_sum",
"Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))"
}
]
}
}
]
}
この例では、ポリシーの ARN が返されます。
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy",
"Alarms": []
}