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

Date de la dernière mise à jour : 30/01/2020

Je souhaite récupérer des points de données à partir de mes mesures Amazon CloudWatch. Quelle API faut-il que j'utilise, GetMetricData ou GetMetricStatistics ?

Brève description

Il est recommandé d'utiliser l'API GetMetricData au lieu de GetMetricStatistics, car vous pouvez récupérer des données plus rapidement à grande échelle avec GetMetricDataGetMetricData prend également en charge les mathématiques appliquées aux métriques et renvoie des résultats ordonnés et paginés.

  Métriques par appel Points de données par appel Prend en charge les mathématiques appliquées aux métriques Renvoie les résultats classés et paginés
GetMetricData 500 100 800 Oui Oui*
GetMetricStatistics 1 1 440 Non Non

*Pour renvoyer le prochain ensemble de points de données, vous devez itérer sur les données à l'aide du jeton NextToken (--next-token) fourni dans la réponse.

Les quotas de service pour l'API GetMetricData sont les suivants :

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

Résolution

Avant de commencer, assurez-vous d'avoir installé la dernière version de l'interface de ligne de commande AWS (AWS CLI).

Utilisez l'exemple d'appel suivant comme référence pour créer vos propres appels API GetMetricData dans l'interface de ligne de commande AWS.

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 possède deux métriques personnalisées (Invocations et Errors) et une métrique (ErrorRate) calculée par les mathématiques appliquées aux métriques des 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 de métriques en tant que métriques personnalisées en utilisant PutMetricData. Exemples :

$ 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 sous 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.    Vérifiez la sortie. Dans cet exemple, cinq points de données sont calculés à l'aide des mathématiques appliquées aux métriques et retournés par ordre chronologique. m1 et m2 ne sont pas inclus dans la réponse, car ReturnData est défini sur faux.

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

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?