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

최종 업데이트 날짜: 2019년 10월 24일

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

간략한 설명

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

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

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

GetMetricData API에 대한 제한은 다음과 같습니다.

  • 50TPS(초당 트랜잭션).
  • 180,000DPS(초당 데이터 포인트). API 요청의 StartTime이 현재 시간을 기준으로 3시간 이내인 경우.
  • 90,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에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?