

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

# 지표 수식을 사용하여 대상 추적 조정 정책 생성
<a name="ec2-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개 이상의 측정기준으로 이루어진 고유한 조합입니다.
+ 산술 연산자(\+ - \* / ^), 통계 함수(예: AVG 또는 SUM) 또는 CloudWatch에서 지원하는 기타 함수를 사용할 수 있습니다.
+ 수학 표현식의 공식에서 지표 및 다른 수학 표현식의 결과를 모두 사용할 수 있습니다.
+ 지표 사양에 사용된 표현식은 결국 단일 시계열을 반환해야 합니다.
+ CloudWatch 콘솔 또는 CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) API를 사용하여 지표 수학 표현식이 유효한지 확인할 수 있습니다.

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

인스턴스당 Amazon SQS 대기열 백로그를 계산하려면 대기열에서 검색 가능한 대략적인 메시지 수를 가져와 Auto Scaling 그룹의 실행 용량(`InService` 상태인 인스턴스의 수)으로 나눠서 인스턴스당 Amazon SQS 대기열 백로그를 산출합니다. 자세한 설명은 [Amazon SQS 기반 조정 정책](as-using-sqs-queue.md) 섹션을 참조하세요.

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

 `sum of (number of messages in the queue)/(number of InService instances)`

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


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

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


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

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

![대기열 아키텍처 다이어그램을 사용한 Amazon EC2 Auto Scaling](http://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/images/sqs-as-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 group size (the number of InService instances)",
                   "Id": "m2",
                   "MetricStat": {
                       "Metric": {
                           "MetricName": "GroupInServiceInstances",
                           "Namespace": "AWS/AutoScaling",
                           "Dimensions": [
                               {
                                   "Name": "AutoScalingGroupName",
                                   "Value": "{{my-asg}}"
                               }
                           ]
                       },
                       "Stat": "Average"
                   },
                   "ReturnData": false
               },
               {
                   "Label": "Calculate the backlog per instance",
                   "Id": "e1",
                   "Expression": "m1 / m2",
                   "ReturnData": true
               }
           ]
       },
       "TargetValue": {{100}}
   }
   ```

   자세한 설명은* Amazon EC2 Auto Scaling API 참조의* [TargetTrackingConfiguration](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TargetTrackingConfiguration.html)을 참조하세요.
**참고**  
다음은 CloudWatch 지표에 대한 지표 이름, 네임스페이스, 차원 및 통계를 찾는 데 도움이 되는 몇 가지 추가 리소스입니다.  
 AWS 서비스에 사용 가능한 지표에 대한 자세한 설명은 *Amazon CloudWatch 사용 설명서*의 [CloudWatch 지표를 게시하는AWS 서비스](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html)를 참조하세요.
 AWS CLI를 사용하여 CloudWatch 지표에 대한 정확한 지표 이름, 네임스페이스 및 차원(해당되는 경우)을 얻으려면 [list-metrics](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/list-metrics.html)를 참조하세요.

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

   ```
   aws autoscaling put-scaling-policy --policy-name {{sqs-backlog-target-tracking-scaling-policy}} \
     --auto-scaling-group-name {{my-asg}} --policy-type TargetTrackingScaling \
     --target-tracking-configuration {{file://config.json}}
   ```

   이 명령이 성공하면 사용자를 대신하여 생성된 두 CloudWatch 경보의 Amazon 리소스 이름(ARN)과, 정책의 ARN이 반환됩니다.

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/sqs-backlog-target-tracking-scaling-policy",
       "Alarms": [
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e",
               "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e"
           },
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2",
               "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2"
           }
       ]
   }
   ```
**참고**  
이 명령에서 오류가 발생하면 AWS CLI 로컬에서를 최신 버전으로 업데이트했는지 확인합니다.