Saltar al contenido

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

4 minutos de lectura
0

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

Descripción corta

Se recomienda usar la operación de la API GetMetricData en lugar de GetMetricStatistics, ya que puede recuperar datos más rápidamente a escala con GetMetricData. GetMetricData también admite matemáticas métricas y devuelve resultados ordenados y paginados. 

A continuación se indican las cuotas de servicio de la operación 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 3 horas con respecto a la hora actual.
  • 396 000 DPS si la StartTime está a más de 3 horas de la hora actual.

Nota: El precio de GetMetricData es diferente al precio de GetMetricStatistics. Para obtener más información, selecciona la pestaña Métricas en la sección Nivel de pago de la página de precios de Amazon CloudWatch.

Resolución

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

Para usar la operación de la API GetMetricData para obtener puntos de datos, sigue estos pasos en la AWS CLI:

  1. Crea un parámetro de entrada para la operación de la API GetMetricData.<br id=hardline_break/> Ejemplo de operación:

     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: Sustituye MyApplication por el nombre de tu aplicación.<br id=hardline_break/> En la llamada anterior, el parámetro de entrada tiene las métricas personalizadas Invocations y Errors. CloudWatch calcula la métrica ErrorRate a partir de las matemáticas métricas de las otras dos métricas.

  2. Utiliza PutMetricData para publicar datos métricos de muestra como métricas personalizadas.<br id=hardline_break/> Ejemplo de operación:

    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, agrega la opción --metric-data a una operación de PutMetricData en el mismo espacio de nombres y, a continuación, ejecuta la API.

  3. Ejecuta el siguiente comando get-metric-data de la AWS CLI:

    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

    Nota: Sustituye //./metric-data-queries.json por tu archivo JSON, 2018-06-19T04:00:00Z por la hora de inicio y 2018-06-19T04:30:00Z por la hora de finalización.<br id=hardline_break/> Resultado de 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 de ejemplo anterior, CloudWatch calcula cinco puntos de datos con matemáticas métricas y los devuelve como un resultado ordenado en el tiempo. Como ReturnData está configurado como «false», m1 y m2 no se incluyen en la respuesta.