Sollte ich getMetricData oder GetMetricStatistics für CloudWatch-Metriken verwenden?

Lesedauer: 4 Minute
0

Ich möchte Datenpunkte aus meinen Amazon CloudWatch-Metriken abrufen. Welche API sollte ich verwenden, getMetricData oder getMetricStatistics?

Kurzbeschreibung

Es hat sich bewährt, die GetMetricData-API anstelle von getMetricStatistics zu verwenden, da Sie mit GetMetricData Daten schneller und skalierbarer abrufen können. **GetMetricData **unterstützt auch metrische Mathematik und gibt geordnete, paginierte Ergebnisse zurück. Dieser Unterschied in der Funktionalität spiegelt sich in den Kosten der einzelnen Dienste wider. GetMetricStatistics ist im kostenlosen Kontingent von CloudWatch für bis zu 1 Million API-Anfragen enthalten, GetMetricData nicht. In der folgenden Tabelle und der CloudWatch-Preistabelle finden Sie heraus, welche API für Sie besser geeignet ist.

Metriken pro AufrufDatenpunkte pro AufrufUnterstützt metrische MathematikGibt geordnete und paginierte Ergebnisse zurückIn den Limits für kostenlose Kontingente enthalten
Metrische Daten abrufen500100.800JaJa*Nein
GetMetricStatistics11.440NeinNeinJa

\ *Um den nächsten Satz von Datenpunkten zurückzugeben, müssen Sie mit dem in der Antwort angegebenen NextToken (--next-token) über die Daten iterieren.

Die Servicekontingente für die GetMetricData-API sind:

  • 50 Transaktionen pro Sekunde (TPS).
  • 180.000 Datenpunkte pro Sekunde (DPS), wenn die StartTime in der API-Anfrage weniger als drei Stunden von der aktuellen Uhrzeit entfernt ist.
  • 396.000 DPS, wenn die StartTime mehr als drei Stunden von der aktuellen Uhrzeit entfernt ist.

Behebung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Verwenden Sie den folgenden Beispielaufruf als Referenz für Ihre eigenen GetMetricData-API-Aufrufe in der AWS-CLI.

1.    Erstellen Sie einen Eingabeparameter für Ihren GetMetricData API -Aufruf (metric-data-queries.json). Der Eingabeparameter enthält zwei benutzerdefinierte Metriken (Aufrufe und Fehler) und eine Metrik (ErrorRate), die anhand der metrischen Mathematik der beiden anderen Metriken berechnet wird (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.    Veröffentlichen Sie Metrik-Beispieldaten als benutzerdefinierte Metriken mit PutMetricData. Zum Beispiel:

$ 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

Hinweis: Sie können auch bis zu 20 Metriken mit einem einzigen PutMetricData-API-Aufruf unter demselben Namespace veröffentlichen. Verwenden Sie dazu die Option --metric-data im PutMetricData-Aufruf.

3.    Führen Sie den Befehl aws cloudwatch get-metric-data mit Ihren Eingabeparametern.

4.    Überprüfen Sie die Ausgabe. In diesem Beispiel werden fünf Datenpunkte mithilfe von metrischer Mathematik berechnet und als zeitgeordnetes Ergebnis zurückgegeben. m1 and m2 sind nicht in der Antwort enthalten, da ReturnData auf false gesetzt ist.

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

Weitere Informationen

get-metric-data AWS CLI Referenz

get-metric-statistics AWS CLI Referenz

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren