사용자 정의 지표를 사용하는 고급 예측적 조정 정책 구성 - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사용자 정의 지표를 사용하는 고급 예측적 조정 정책 구성

예측적 조정 정책에서는 미리 정의된 지표나 사용자 정의 지표를 사용할 수 있습니다. 사용자 정의 지표는 미리 정의된 지표(CPU, 네트워크 I/O 및 Application Load Balancer 요청 수)가 애플리케이션 로드를 충분히 설명하지 못하는 경우에 유용합니다.

사용자 지정 지표가 포함된 예측 규모 조정 정책을 생성할 때는 에서 제공하는 다른 CloudWatch 지표를 지정하거나 직접 정의하여 AWS게시하는 지표를 지정할 수 있습니다. 또한 지표 수학을 사용하여 기존 지표를 집계하고 자동으로 AWS 추적되지 않는 새로운 시계열로 변환할 수 있습니다. 예컨대, 새 합계 또는 평균을 계산하여 데이터의 값을 결합하는 것을 집계라고 합니다. 결과 데이터를 집계라고 합니다.

다음 섹션에는 정책의 JSON 구조를 구성하는 방법에 대한 모범 사례와 예가 나와 있습니다.

모범 사례

다음 모범 사례는 사용자 정의 지표를 보다 효과적으로 사용하는 데 도움이 될 수 있습니다.

  • 로드 지표 규격에서 가장 유용한 지표는 그룹의 용량에 관계없이 Auto Scaling 그룹 전체의 로드를 나타내는 지표입니다.

  • 조정 지표 규격의 경우, 가장 유용한 지표는 인스턴스당 평균 처리량 또는 사용률 지표입니다.

  • 조정 지표는 용량에 반비례해야 합니다. 즉, Auto Scaling 그룹의 인스턴스 수가 증가하면 조정 지표도 거의 같은 백분율로 감소해야 합니다. 예측적 조정이 예상대로 작동하게 하려면 로드 지표와 조정 지표도 서로 밀접한 상관 관계가 있어야 합니다.

  • 목표 사용률은 조정 지표 타입과 일치해야 합니다. CPU 사용률을 사용하는 정책 구성의 경우, 이는 목표 백분율입니다. 요청 또는 메시지 수와 같이 처리량을 사용하는 정책 구성의 경우, 이는 1분 간격 동안 인스턴스당 요청 또는 메시지의 대상 수입니다.

  • 이러한 권장 사항을 따르지 않으면 시계열의 예측된 미래 값이 정확하지 않을 수 있습니다. 데이터가 올바른지 검증하기 위해 Amazon EC2 Auto Scaling 콘솔에서 예측된 값을 볼 수 있습니다. 또는 예측 규모 조정 정책을 만든 후 API 호출을 통해 반환된 LoadForecastCapacityForecast 객체를 검사할 수도 있습니다. GetPredictiveScalingForecast

  • 예측적 조정이 능동적으로 용량 조정을 시작하기 전에 예상을 평가할 수 있게 예상 전용 모드에서 예측적 조정을 구성하는 것이 좋습니다.

필수 조건

정책에서 맞춤 지표를 지정하려면 cloudwatch:GetMetricData 권한이 있어야 합니다.

AWS 제공하는 지표 대신 자체 지표를 지정하려면 먼저 지표를 에 게시해야 합니다. CloudWatch 자세한 내용은 Amazon CloudWatch 사용 설명서의 사용자 지정 지표 게시를 참조하십시오.

자체 지표를 게시하는 경우, 최소 5분 간격으로 데이터 요소를 게시해야 합니다. Amazon EC2 Auto Scaling은 필요한 기간을 CloudWatch 기준으로 데이터 포인트를 검색합니다. 예를 들어 부하 지표 사양에서는 시간별 지표를 사용하여 애플리케이션의 부하를 측정합니다. CloudWatch 게시된 지표 데이터를 사용하여 각 1시간 기간에 해당하는 타임스탬프를 사용하여 모든 데이터 포인트를 집계하여 1시간 동안 단일 데이터 값을 제공합니다.

맞춤 지표를 위한 JSON 구성

다음 섹션에는 데이터를 쿼리하도록 예측 스케일링을 구성하는 방법에 대한 예가 나와 있습니다. CloudWatch 이 옵션을 구성하는 방법에는 두 가지가 있으며 선택하는 방법에 따라 예측 조정 정책에 사용할 JSON을 구성하는 데 사용하는 형식이 달라집니다. 지표 수학을 사용하는 경우, JSON의 형식은 수행되는 지표 수학에 따라 더 달라집니다.

  1. 에서 제공하는 다른 CloudWatch AWS 지표나 게시하려는 지표에서 직접 데이터를 가져오는 정책을 만들려면 을 CloudWatch 참조하십시오맞춤 로드 및 조정 지표가 있는 예측 조정 정책의 예(AWS CLI).

  2. 여러 CloudWatch 지표를 쿼리하고 수학 식을 사용하여 이러한 지표를 기반으로 새 시계열을 만들 수 있는 정책을 만들려면 을 참조하십시오지표 수학 표현식 사용.

맞춤 로드 및 조정 지표가 있는 예측 조정 정책의 예(AWS CLI)

를 사용하여 사용자 지정 부하 및 규모 조정 지표가 포함된 예측 규모 조정 정책을 만들려면 --predictive-scaling-configuration 에 대한 인수를 라는 JSON 파일에 저장합니다. AWS CLIconfig.json

다음 예에서 교체 가능한 값을 지표 및 목표 사용률의 값으로 교체하여 맞춤 지표를 추가하기 시작합니다.

{ "MetricSpecifications": [ { "TargetValue": 50, "CustomizedScalingMetricSpecification": { "MetricDataQueries": [ { "Id": "scaling_metric", "MetricStat": { "Metric": { "MetricName": "MyUtilizationMetric", "Namespace": "MyNameSpace", "Dimensions": [ { "Name": "MyOptionalMetricDimensionName", "Value": "MyOptionalMetricDimensionValue" } ] }, "Stat": "Average" } } ] }, "CustomizedLoadMetricSpecification": { "MetricDataQueries": [ { "Id": "load_metric", "MetricStat": { "Metric": { "MetricName": "MyLoadMetric", "Namespace": "MyNameSpace", "Dimensions": [ { "Name": "MyOptionalMetricDimensionName", "Value": "MyOptionalMetricDimensionValue" } ] }, "Stat": "Sum" } } ] } } ] }

자세한 내용은 Amazon EC2 Auto Scaling API 레퍼런스를 참조하십시오 MetricDataQuery.

참고

다음은 지표에 대한 지표 이름, 네임스페이스, 차원 및 통계를 찾는 데 도움이 되는 몇 가지 추가 리소스입니다. CloudWatch

이 정책을 생성하려면 다음 예와 같이 JSON 파일을 입력으로 사용하여 put-scaling-policy명령을 실행합니다.

aws autoscaling put-scaling-policy --policy-name my-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

이 명령이 제대로 실행되면 정책의 Amazon 리소스 이름(ARN)을 반환합니다.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-predictive-scaling-policy", "Alarms": [] }

지표 수학 표현식 사용

다음 섹션에서는 정책에서 지표 수학을 사용하는 방법을 보여 주는 예측 조정 정책의 정보와 예를 제공합니다.

지표 수학 이해

기존 지표 데이터를 집계하기만 하려는 경우 지표 수학을 사용하면 다른 CloudWatch 지표를 게시하는 데 드는 노력과 비용을 절약할 수 있습니다. CloudWatch AWS 제공하는 모든 지표를 사용할 수 있으며 응용 프로그램의 일부로 정의한 지표도 사용할 수 있습니다. 예컨대, 인스턴스당 Amazon SQS 대기열 백로그를 계산할 수 있습니다. 대기열에서 검색 가능한 대략적인 메시지 수를 가져와 Auto Scaling 그룹의 실행 용량으로 나누어 이를 수행할 수 있습니다.

자세한 내용은 Amazon 사용 CloudWatch 설명서의 지표 수학 사용을 참조하십시오.

예측적 조정 정책에서 지표 수학 표현식을 사용하기로 선택한 경우, 다음 사항을 고려하세요.

  • 지표 수학 연산은 고유한 조합의 지표 이름, 네임스페이스 및 지표의 차원 키/값 페어의 데이터 요소를 사용합니다.

  • 모든 산술 연산자 (+ - */^), 통계 함수 (예: AVG 또는 SUM) 또는 지원하는 기타 함수를 사용할 수 있습니다. CloudWatch

  • 수학 표현식의 공식에서 지표 및 다른 수학 표현식의 결과를 모두 사용할 수 있습니다.

  • 지표 수학 표현식은 다양한 집계로 구성될 수 있습니다. 그러나 최종 집계 결과에서 조정 지표에는 Average를 사용하고 로드 지표에는 Sum을 사용하는 것이 가장 좋습니다.”

  • 지표 규격에 사용된 표현식은 결국 단일 시계열을 반환해야 합니다.

지표 수학을 사용하려면 다음을 수행하십시오:

  • 메트릭을 하나 이상 선택합니다. CloudWatch 그런 다음 표현식을 생성합니다. 자세한 내용은 Amazon 사용 CloudWatch 설명서의 지표 수학 사용을 참조하십시오.

  • CloudWatch콘솔 또는 CloudWatch GetMetricDataAPI를 사용하여 메트릭 수학 표현식이 유효한지 확인하십시오.

지표 수학을 사용하여 지표를 결합하는 예측 조정 정책의 예(AWS CLI)

지표를 직접 지정하는 대신 어떤 방식으로든 해당 데이터를 먼저 처리해야 하는 경우가 있습니다. 예컨대, Amazon SQS 대기열에서 작업을 가져오는 애플리케이션이 있고 대기열의 항목 수를 예측적 조정의 기준으로 사용할 수 있습니다. 대기열의 메시지 수가 필요한 인스턴스 수를 단독으로 정의하지 않습니다. 따라서 인스턴스당 백로그를 계산하는 데 사용할 수 있는 지표를 생성하려면 더 많은 작업이 필요합니다. 자세한 설명은 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)

검색 표현식은 여러 Auto Scaling 그룹에서 지표를 쿼리하고 이에 대해 수학 표현식을 수행할 수 있는 고급 옵션을 제공합니다. 이는 특히 블루/그린 배치에 유용합니다.

참고

블루/그린 배치는 두 개의 별개이지만 동일한 Auto Scaling 그룹을 생성하는 배치 방법입니다. 그룹 중 하나만 프로덕션 트래픽을 수신합니다. 사용자 트래픽은 초기에 이전("블루") Auto Scaling 그룹으로 전달되는 반면 새 그룹("그린")은 새 버전의 애플리케이션 또는 서비스를 테스트하고 평가하는 데 사용됩니다. 새 배치가 테스트되고 수락되면 사용자 트래픽이 그린 Auto Scaling 그룹으로 이동됩니다. 그런 다음 배치가 성공한 후 블루 그룹을 삭제할 수 있습니다.

새로운 Auto Scaling 그룹이 블루/그린 배치의 일부로 생성되면 해당 지표 규격을 변경하지 않고도 각 그룹의 지표 기록이 예측적 조정 정책에 자동으로 포함될 수 있습니다. 자세한 내용은 Compute 블로그에서 블루/그린 배포와 함께 EC2 Auto Scaling 예측 조정 정책 사용을 참조하십시오. AWS

다음 예 정책은 이를 수행하는 방법을 보여줍니다. 이 예에서 정책은 Amazon EC2에서 내보낸 CPUUtilization 지표를 사용합니다. Amazon EC2 Auto Scaling GroupInServiceInstances 지표와 수학 표현식을 사용하여 인스턴스당 조정 지표 값을 계산합니다. 또한 GroupInServiceInstances 지표를 가져오기 위한 용량 지표 규격을 지정합니다.

검색 표현식은 지정된 검색 기준에 따라 여러 Auto Scaling 그룹에서 인스턴스의 CPUUtilization을 찾습니다. 나중에 동일한 검색 기준과 일치하는 새 Auto Scaling 그룹을 생성하면 새 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": [] }

고려 사항 및 문제 해결

사용자 정의 지표를 사용하는 동안 문제가 발생하면 다음을 수행하는 것이 좋습니다.

  • 오류 메시지가 제공되면 메시지를 읽고 가능한 경우, 보고된 문제를 해결하세요.

  • 블루/그린 배치 시나리오에서 검색 표현식을 사용하려고 할 때 문제가 발생하는 경우, 먼저 정확히 일치 대신 부분 일치를 찾는 검색 표현식을 생성하는 방법을 알고 있어야 합니다. 또한 쿼리가 특정 애플리케이션을 실행 중인 Auto Scaling 그룹만 찾는지 확인합니다. 검색 표현식 구문에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서의 CloudWatch 검색 표현식 구문을 참조하십시오.

  • 표현식을 미리 검증하지 않은 경우 조정 정책을 생성할 때 put-scaling-policy명령이 표현식의 유효성을 검사합니다. 그러나 이 명령이 발견된 오류의 정확한 원인을 식별하지 못할 수도 있습니다. 문제를 해결하려면 명령에 대한 요청 응답에서 발생하는 오류를 해결하세요. get-metric-data 콘솔에서 표현식 문제를 해결할 수도 있습니다. CloudWatch

  • 콘솔에서 로드(Load)용량(Capacity) 그래프를 볼 때 용량(Capacity) 그래프에 데이터가 표시되지 않을 수 있습니다. 그래프에 완전한 데이터가 있는지 확인하려면 Auto Scaling 그룹에 대해 그룹 지표를 일관되게 사용 설정해야 합니다. 자세한 설명은 Auto Scaling 그룹 지표 활성화(콘솔) 섹션을 참조하세요.

  • 용량 지표 규격은 수명 동안 서로 다른 Auto Scaling 그룹에서 실행되는 애플리케이션이 있는 경우, 블루/그린 배치에만 유용합니다. 이 사용자 정의 지표를 사용하면 여러 Auto Scaling 그룹의 총 용량을 제공할 수 있습니다. 예측적 조정은 이를 사용하여 콘솔의 용량(Capacity) 그래프에 기록 데이터를 표시합니다.

  • MetricDataQueries가 SUM()과 같은 수학 함수 없이 자체적으로 SEARCH() 함수를 지정하는 경우, ReturnData에 대해 false를 지정해야 합니다. 이는 검색 표현식이 여러 시계열을 반환할 수 있고 표현식에 근거하여 하는 지표 규격이 하나의 시계열만 반환할 수 있기 때문입니다.

  • 검색 표현식과 관련된 모든 지표는 해상도가 동일해야 합니다.

제한 사항

  • 하나의 지표 규격에서 최대 10개 지표의 데이터 요소를 쿼리할 수 있습니다.

  • 이 제한을 위해 하나의 표현식이 하나의 지표로 계산됩니다.