CloudWatch 지표에 GetMetricData 또는 GetMetricStatistics를 사용해야 하나요?
Amazon CloudWatch 지표에서 데이터 포인트를 검색하려고 합니다. GetMetricData 또는 GetMetricStatistics 중 어떤 API를 사용해야 하나요?
간략한 설명
GetMetricData를 사용하면 대규모 데이터를 더 빠르게 검색할 수 있으므로 GetMetricStatistics 대신 GetMetricData API를 사용하는 것이 가장 좋습니다. GetMetricData는 지표 수식도 지원하며 정렬된 결과를 여러 페이지로 반환합니다. 이러한 기능 차이는 각 서비스의 비용에 반영됩니다. CloudWatch의 프리 티어에는 최대 1백만 건의 API 요청에 대해 GetMetricStatistics가 포함되어 있지만 GetMetricData는 포함되어 있지 않습니다. 아래 차트와 CloudWatch 요금 차트를 참조하여 어떤 API가 더 적합한지 확인하세요.
호출당 지표 수 | 호출당 데이터 포인트 수 | 지표 수식 지원 | 정렬된 결과를 여러 페이지로 반환 | 프리 티어 한도에 포함됨 | |
GetMetricData | 500 | 100,800 | 예 | 예* | 아니요 |
GetMetricStatistics | 1 | 1,440 | 아니요 | 아니요 | 예 |
*다음 데이터 포인트 세트를 반환하려면 응답에 제공된 NextToken(--next-token)을 사용하여 데이터를 반복해야 합니다.
GetMetricData API에 대한 service quotas는 다음과 같습니다.
- 50 TPS(초당 트랜잭션).
- 180,000 DPS(초당 데이터 포인트)(API 요청의 StartTime이 현재 시간을 기준으로 3시간 이내인 경우).
- StartTime이 현재 시간으로부터 3시간을 초과하는 경우 DPS가 396,000.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.
AWS CLI에서 고유의 GetMetricData API 호출을 사용하려면 다음 예제 호출을 참조로 사용하세요.
1. GetMetricData API 호출에 대한 입력 파라미터(metric-data-queries.json)를 생성합니다. 이 입력 파라미터에는 두 개의 사용자 지정 지표(Invocations 및 Errors)와 하나의 계산 지표(ErrorRate)가 있습니다. ErrorRate는 다른 두 지표에 대한 지표 수식으로 계산됩니다.
$ cat metric-data-queries.json [ { "Id": "e1", "Expression": "m1 / m2", "Label": "ErrorRate" }, { "Id": "m1", "MetricStat": { "Metric": { "Namespace": "MyApplication", "MetricName": "Errors", "Dimensions": [ { "Name": "FunctionName", "Value": "MyFunc" } ] }, "Period": 300, "Stat": "Sum", "Unit": "Count" }, "ReturnData": false }, { "Id": "m2", "MetricStat": { "Metric": { "Namespace": "MyApplication", "MetricName": "Invocations", "Dimensions": [ { "Name": "FunctionName", "Value": "MyFunc" } ] }, "Period": 300, "Stat": "Sum", "Unit": "Count" }, "ReturnData": false } ]
2. PutMetricData를 사용하여 샘플 지표 데이터를 사용자 지정 지표로 게시합니다. 예를 들면 다음과 같습니다.
$ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:00:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:05:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:10:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:15:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:20:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 3 --unit Count --timestamp 2018-06-19T04:00:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 6 --unit Count --timestamp 2018-06-19T04:05:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 2 --unit Count --timestamp 2018-06-19T04:10:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 9 --unit Count --timestamp 2018-06-19T04:15:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 1 --unit Count --timestamp 2018-06-19T04:20:00Z
참고: 동일한 네임스페이스에서 단일 PutMetricData API 호출을 사용하여 최대 20개의 지표를 게시할 수도 있습니다. 이렇게 하려면PutMetricData호출에서 -metric-data 옵션을 사용하세요.
3. 입력 파라미터와 함께 aws cloudwatch get-metric-data 명령을 실행합니다.
4. 출력을 검토합니다. 이 예시에서는 지표 수식을 사용하여 5개의 데이터 포인트가 계산된 후 결과가 시간순으로 정렬되어 반환됩니다. ReturnData가 false로 설정되었으므로 m1 및 m2는 응답에 포함되지 않습니다.
$ aws cloudwatch get-metric-data --metric-data-queries file://./metric-data-queries.json --start-time 2018-06-19T04:00:00Z --end-time 2018-06-19T04:30:00Z { "MetricDataResults": [ { "Timestamps": [ "2018-06-19T04:20:00Z", "2018-06-19T04:15:00Z", "2018-06-19T04:10:00Z", "2018-06-19T04:05:00Z", "2018-06-19T04:00:00Z" ], "StatusCode": "Complete", "Values": [ 0.1, 0.9, 0.2, 0.6, 0.3 ], "Id": "e1", "Label": "ErrorRate" } ] }
관련 정보

관련 콘텐츠
- 질문됨 24일 전lg...
- 질문됨 3달 전lg...
- 질문됨 2달 전lg...
- 질문됨 6년 전lg...
- 질문됨 21일 전lg...
- AWS 공식업데이트됨 7달 전
- AWS 공식업데이트됨 23일 전
- AWS 공식업데이트됨 7달 전
- AWS 공식업데이트됨 8달 전