Qual API escolho para as métricas do CloudWatch, GetMetricData ou GetMetricStatistics?

4 minuto de leitura
0

Quero recuperar os pontos de dados das métricas do Amazon CloudWatch. Qual API devo usar, GetMetricData ou GetMetricStatistics?

Breve descrição

Recomenda-se usar a API GetMetricData em vez de GetMetricStatistics, pois GetMetricData permite recuperar dados mais rapidamente e em maior escala. GetMetricData também é compatível com matemática de métricas e retorna resultados ordenados e paginados. Essa diferença de funcionalidades é refletida no custo de cada serviço. GetMetricStatistics está inclusa no nível gratuito do CloudWatch até um milhão de solicitações da API, enquanto GetMetricData não. Consulte a tabela abaixo e a tabela de preços do CloudWatch para saber qual API mais condiz com suas necessidades.

Métricas por chamadaPontos de dados por chamadaÉ compatível com expressões matemáticasResultados ordenados e paginadosInclusa nos limites do nível gratuito
GetMetricData500100.800SimSim*Não
GetMetricStatistics11.440NãoNãoSim

*Para retornar o próximo conjunto de pontos de dados, é necessário repetir os dados usando o NextToken (--next-token) fornecido na resposta.

As cotas de serviço da API GetMetricData são as seguintes:

  • 50 transações por segundo (TPS).
  • 180.000 pontos de dados por segundo (DPS), se o StartTime for anterior ao horário atual em três horas ou menos.
  • 396.000 DPS, se oStartTime for anterior ao horário atual em mais de três horas.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando sua versão mais recente.

Use a chamada a seguir como exemplo para fazer suas próprias chamadas da API GetMetricData na AWS CLI.

1.    Crie um parâmetro de entrada para a chamada da API GetMetricData (metric-data-queries.json). Há duas métricas personalizadas no parâmetro de entrada, (Invocations e Errors) e uma métrica (ErrorRate), que é calculada pela matemática de métricas das outras duas métricas (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.    Publique amostras dos dados das métricas personalizadas usando PutMetricData. Por exemplo:

$ 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

Observação: é possível publicar até 20 métricas usando uma única chamada da API PutMetricData no mesmo namespace. Para isso, use a opção --metric-data na chamada da PutMetricData.

3.    Execute o comando aws cloudwatch get‑metric‑data com os parâmetros da sua entrada.

4.    Analise a saída. Neste exemplo, cinco pontos de dados foram calculados usando expressões matemáticas entre as métricas, e foram ordenados por tempo. A resposta não inclui m1 nem m2, porque ReturnData está definido como false.

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

Informações relacionadas

get-metric-data na Referência de Comandos da AWS CLI

get-metric-statistics na Referência de Comandos da AWS CLI

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos