Qual API escolho para as métricas do CloudWatch, GetMetricData ou GetMetricStatistics?
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 chamada | Pontos de dados por chamada | É compatível com expressões matemáticas | Resultados ordenados e paginados | Inclusa nos limites do nível gratuito | |
GetMetricData | 500 | 100.800 | Sim | Sim* | Não |
GetMetricStatistics | 1 | 1.440 | Não | Não | Sim |
*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
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 10 meses
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos