CloudWatch 지표에 대해 GetMetricData 또는 GetMetricStatistics 중 무엇을 사용해야 하나요?

4분 분량
0

Amazon CloudWatch 지표에서 데이터 포인트를 검색하려고 합니다. GetMetricData 또는 GetMetricStatistics 중 어떤 API를 사용해야 하나요?

간략한 설명

GetMetricData를 사용하면 대규모 데이터를 더 빠르게 검색할 수 있으므로 GetMetricStatistics 대신 GetMetricData API를 사용하는 것이 가장 좋습니다. GetMetricData는 지표 수학도 지원하며 정렬된 결과를 여러 페이지로 반환합니다. 이러한 기능의 차이는 각 서비스의 비용에 반영됩니다. CloudWatch의 프리 티어에는 최대 1백만 건의 API 요청에 대해 GetMetricStatistics가 포함되어 있지만 GetMetricData는 포함되어 있지 않습니다. 아래 차트와 CloudWatch 요금표를 참조하여 어떤 API가 더 적합한지 알아보세요.

호출당 지표호출당 데이터 포인트지표 수학 지원순서가 지정되고 페이지가 매겨진 결과 반환프리 티어 한도에 포함
GetMetricData500100,800Yes*아니요
GetMetricStatistics11,440아니요아니요

*다음 데이터 포인트 세트를 반환하려면 응답에 제공된 NextToken(--next-token)을 사용하여 데이터를 반복해야 합니다.

GetMetricData API에 대한 service quotas는 다음과 같습니다.

  • 50 TPS(초당 트랜잭션).
  • 180,000 DPS(초당 데이터 포인트)(API 요청의 StartTime이 현재 시간을 기준으로 세 시간 이내인 경우).
  • 396,000DPS(StartTime이 현재 시간으로부터 세 시간 이상인 경우).

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우, 최신 AWS CLI 버전을 사용하고 있는지 확인합니다.

AWS CLI에서 고유의 GetMetricData API 호출을 사용하려면 다음 예제 호출을 참조로 사용하세요.

1.    GetMetricData API 직접 호출을 위한 입력 파라미터(metric-data-queries.json)를 생성합니다. 이 입력 파라미터에는 두 개의 사용자 지정 지표(InvocationsErrors)와 하나의 계산 지표(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.    출력을 검토합니다. 이 예시에서는 지표 수학을 사용하여 다섯 개의 데이터 포인트가 계산된 후 결과가 시간순으로 정렬되어 반환됩니다. ReturnData가 false로 설정되었으므로 m1m2는 응답에 포함되지 않습니다.

$ 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"
        }
    ]
}

관련 정보

get-metric-data AWS CLI 참조

get-metric-statistics AWS CLI 참조

AWS 공식
AWS 공식업데이트됨 2년 전