

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

# 지표 수학을 사용하여 Application Auto Scaling에서 대상 추적 조정 정책 생성
<a name="application-auto-scaling-target-tracking-metric-math"></a>

지표 수식을 사용하면 여러 CloudWatch 지표를 쿼리하고 수학 표현식을 활용함으로써 이러한 지표를 기반으로 새로운 시계열을 만들 수 있습니다. CloudWatch 콘솔에서 결과 시계열을 시각화하고 대시보드에 추가할 수 있습니다. 지표 수학에 대한 자세한 설명은 *Amazon CloudWatch 사용자 가이드*에서 [지표 수학 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)을 참조하세요.

다음은 지표 수학 표현식에 적용되는 고려 사항입니다.
+ 사용 가능한 모든 CloudWatch 지표를 쿼리할 수 있습니다. 각 지표는 지표 이름, 네임스페이스, 0개 이상의 측정기준으로 이루어진 고유한 조합입니다.
+ 산술 연산자(\$1 - \$1 / ^), 통계 함수(예: AVG 또는 SUM) 또는 CloudWatch에서 지원하는 기타 함수를 사용할 수 있습니다.
+ 수학 표현식의 공식에서 지표 및 다른 수학 표현식의 결과를 모두 사용할 수 있습니다.
+ 지표 사양에 사용된 표현식은 결국 단일 시계열을 반환해야 합니다.
+ CloudWatch 콘솔 또는 CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) API를 사용하여 지표 수학 표현식이 유효한지 확인할 수 있습니다.

**Topics**
+ [예: 태스크당 Amazon SQS 대기열 백로그](#metric-math-sqs-queue-backlog)
+ [제한 사항](#metric-math-limitations)

## 예: 태스크당 Amazon SQS 대기열 백로그
<a name="metric-math-sqs-queue-backlog"></a>

태스크당 Amazon SQS 대기열 백로그를 계산하려면 대기열에서 검색 가능한 대략적인 메시지 수를 가져와 서비스에서 실행 중인 Amazon ECS 태스크의 수로 나눕니다. 자세한 내용은 AWS 컴퓨팅 블로그의 사용자 [지정 지표를 사용한 Amazon Elastic Container Service(ECS) Auto Scaling](https://aws.amazon.com/blogs/containers/amazon-elastic-container-service-ecs-auto-scaling-using-custom-metrics/)을 참조하세요.

표현식의 로직은 다음과 같습니다.

 `sum of (number of messages in the queue)/(number of tasks that are currently in the RUNNING state)`

이 경우, CloudWatch 지표 정보는 다음과 같습니다.


| ID | CloudWatch 지표 | 통계 | Period | 
| --- | --- | --- | --- | 
| m1 | ApproximateNumberOfMessagesVisible | Sum | 1분 | 
| m2 | RunningTaskCount | 평균 | 1분 | 

지표 수식 ID와 표현식은 다음과 같습니다.


| ID | 표현식 | 
| --- | --- | 
| e1 | (m1)/(m2) | 

다음은 이 지표에 대한 아키텍처를 보여주는 다이어그램입니다.

![\[대기열 아키텍처 다이어그램을 사용한 Application Auto Scaling\]](http://docs.aws.amazon.com/ko_kr/autoscaling/application/userguide/images/sqs-custom-metric-diagram.png)


**이 지표 수학을 사용하여 대상 추적 조정 정책 생성(AWS CLI)**

1. 지표 수학 표현식을 사용자 지정된 지표 사양의 일부로서 `config.json`이라는 이름의 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 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 참조*의 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)을 참조하세요.
**참고**  
다음은 CloudWatch 지표에 대한 지표 이름, 네임스페이스, 차원 및 통계를 찾는 데 도움이 되는 몇 가지 추가 리소스입니다.  
 AWS 서비스에 사용할 수 있는 지표에 대한 자세한 내용은 Amazon [AWS CloudWatch 사용 설명서의 CloudWatch 지표를 게시하는 서비스를](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) 참조하세요. *Amazon CloudWatch *
를 사용하여 CloudWatch 지표의 정확한 지표 이름, 네임스페이스 및 차원(해당하는 경우)을 가져오려면 [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html)를 AWS CLI참조하세요.

1. 이 정책을 생성하려면 다음 예에 나와 있는 것처럼 JSON 파일을 입력으로 사용하여 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 명령을 실행합니다.

   ```
   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
   ```

   이 명령이 성공하면 사용자를 대신하여 생성된 두 CloudWatch 경보의 Amazon 리소스 이름(ARN)과, 정책의 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 로컬에서를 최신 버전으로 업데이트했는지 확인합니다.

## 제한 사항
<a name="metric-math-limitations"></a>
+ 최대 요청 크기는 50KB입니다. 이 크기는 정책 정의에서 지표 수학을 사용할 때 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html) API 요청에 대한 총 페이로드 크기입니다. 이 한도를 초과할 경우 Application Auto Scaling은 요청을 거부합니다.
+ 대상 추적 조정 정책과 함께 지표 수학을 사용할 경우 다음 서비스는 지원되지 않습니다.
  + Amazon Keyspaces(Apache Cassandra용) 
  + DynamoDB
  + Amazon EMR
  + Amazon MSK
  + Amazon Neptune