CloudWatch 지표에 대해 GetMetricData 또는 GetMetricStatistics 중 무엇을 사용해야 합니까?

최종 업데이트 날짜: 2020년 1월 30일

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

간략한 설명

GetMetricData를 사용하면 대규모 데이터를 더 빠르게 검색할 수 있으므로 GetMetricStatistics 대신 GetMetricData API를 사용하는 것이 가장 좋습니다. GetMetricData는 지표 수식도 지원하며 정렬된 결과를 여러 페이지로 반환합니다.

  호출당 지표 수 호출당 데이터 포인트 수 지표 수식 지원 정렬된 결과를 여러 페이지로 반환
GetMetricData 500 100,800 예*
GetMetricStatistics 1 1,440 아니요 아니요

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

GetMetricData API에 대한 서비스 할당량은 다음과 같습니다.

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

​해결 방법

시작하기 전에 최신 버전의 AWS CLI(AWS 명령줄 인터페이스)를 설치해야 합니다.

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.    출력을 검토합니다. 이 예제에서는 지표 수식을 사용하여 5개의 데이터 포인트가 계산된 후 결과가 시간순으로 정렬되어 반환됩니다. 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"
        }
    ]
}

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?