¿Es mejor utilizar GetMetricData o GetMetricStatistics para las métricas de CloudWatch?

4 minutos de lectura
0

Quiero saber si es mejor utilizar la API GetMetricData o GetMetricStatistics para recuperar los puntos de datos de mis métricas de Amazon CloudWatch.

Breve descripción

Se recomienda usar la API GetMetricData en lugar de GetMetricStatistics, ya que puede recuperar datos más rápidamente a escala con GetMetricData. Asimismo, GetMetricData también admite matemáticas métricas y devuelve resultados ordenados y paginados. No se le cobrará por utilizar GetMetricStatistics en CloudWatch hasta 1 millón de solicitudes de API. Sin embargo, se le cobrará por usar GetMetricData en CloudWatch.

A continuación se indican las service quotas de la API GetMetricData:

  • 50 transacciones por segundo (TPS).
  • 180 000 puntos de datos por segundo (DPS), si la StartTime de la solicitud de API es inferior o igual a tres horas con respecto a la hora actual.
  • 396 000 DPS si la StartTime está a más de tres horas de la hora actual.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Para llamar a la API GetMetricData en la AWS CLI, siga estos pasos:

  1. Cree un parámetro de entrada para su llamada a la API GetMetricData.
    Ejemplo de llamada:

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

    Nota: En la llamada anterior, el parámetro de entrada tiene las métricas personalizadas Invocations y Errors. La métrica ErrorRate se calcula mediante las matemáticas métricas de las otras dos métricas.

  2. Para publicar datos métricos de muestra como métricas personalizadas, utilice PutMetricData.
    Ejemplo de llamada:

    $ 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

    Nota: Para publicar hasta 20 métricas, utilice una sola llamada a la API PutMetricData en el mismo espacio de nombres. Para ejecutar una única llamada a la API PutMetricData en el mismo espacio de nombres, utilice la opción --metric-data en la llamada a la API PutMetricData.

  3. Ejecute el comando get-metric-data con los parámetros de entrada:

    $ 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
  4. Revise el resultado.
    Resultado del ejemplo:

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

    Nota: En el resultado del ejemplo anterior, se calculan cinco puntos de datos mediante matemáticas métricas y se devuelven como un resultado ordenado en el tiempo. Como ReturnData está configurado como «false», m1 y m2 no se incluyen en la respuesta.

Información relacionada

get-metric-statistics

OFICIAL DE AWSActualizada hace un año