Dois-je utiliser GetMetricData ou GetMetricStatistics pour les métriques CloudWatch ?

Lecture de 5 minute(s)
0

Je souhaite récupérer des points de données à partir de mes métriques Amazon CloudWatch. Quelle API dois-je utiliser, GetMetricData ou GetMetricStatistics ?

Brève description

Une bonne pratique consiste à utiliser l’API GetMetricData au lieu de GetMetricStatistics, car GetMetricData permet de récupérer des données plus rapidement à grande échelle. GetMetricData prend également en charge les mathématiques de métriques et renvoie des résultats ordonnés et paginés. Cette différence de fonctionnalité se reflète dans le coût de chaque service. GetMetricStatistics est inclus dans la version gratuite de CloudWatch, pour un maximum d’un million de requêtes d’API, alors que GetMetricData ne l’est pas. Reportez-vous au tableau ci-dessous et au tableau des prix de CloudWatch pour savoir quelle API vous convient le mieux.

Métriques par appelPoints de données par appelPrend en charge les mathématiques de métriquesRenvoie des résultats ordonnés et paginésInclus dans les limites de l’offre gratuite
GetMetricData500100 800OuiOui*Non
GetMetricStatistics11 440NonNonOui

*Pour renvoyer le prochain ensemble de points de données, vous devez itérer sur les données en utilisant le NextToken (--next-token) fourni dans la réponse.

Les Service Quotas pour l’API GetMetricData sont les suivants :

  • 50 transactions par seconde (TPS).
  • 180 000 points de données par seconde (DPS), si le paramètre StartTime de la demande d’API est inférieur ou égal à trois heures par rapport à l’heure actuelle.
  • 396 000 DPS, si le paramètre StartTime est supérieur à trois heures par rapport à l’heure actuelle.

Résolution

Remarque : si des erreurs surviennent lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez bien la version la plus récente de l’AWS CLI.

Utilisez l’exemple d’appel suivant comme référence pour effectuer vos propres appels d’API GetMetricData dans l’AWS CLI.

1.    Créez un paramètre d’entrée pour votre appel d’API GetMetricData (metric-data-queries.json). Le paramètre d’entrée comporte deux métriques personnalisées (Invocations et Errors) et une métrique (ErrorRate) calculée par les mathématiques appliquées aux deux autres métriques (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.    Publiez des exemples de données métriques en tant que métriques personnalisées en utilisant PutMetricData. Par exemple :

$ 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

Remarque : vous pouvez également publier jusqu’à 20 métriques à l’aide d’un seul appel d’API PutMetricData dans le même espace de noms. Pour ce faire, utilisez l’option --metric-data dans l’appel PutMetricData.

3.    Exécutez la commande aws cloudwatch get-metric-data avec vos paramètres d’entrée.

4.    Examinez les données de sortie. Dans cet exemple, cinq points de données sont calculés à l’aide des mathématiques de métriques et renvoyés sous la forme d’un résultat ordonné dans le temps. m1 et m2 ne sont pas inclus dans la réponse, car ReturnData est défini sur 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"
        }
    ]
}

Informations connexes

Référence de l’interface de la ligne de commande AWS get-metric-data

Référence de l’interface de la ligne de commande AWS get-metric-statistics

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans