Abfragekomponenten und Syntax von Metrics Insights - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abfragekomponenten und Syntax von Metrics Insights

CloudWatch Die Syntax von Metrics Insights lautet wie folgt.

SELECT FUNCTION(metricName) FROM namespace | SCHEMA(...) [ WHERE labelKey OPERATOR labelValue [AND ... ] ] [ GROUP BY labelKey [ , ... ] ] [ ORDER BY FUNCTION() [ DESC | ASC ] ] [ LIMIT number ]

Die möglichen Klauseln in einer Metrics-Insights-Abfrage lauten wie folgt. Bei keinem der Schlüsselwörter wird Groß- und Kleinschreibung berücksichtigt, aber bei den Bezeichnern wie den Namen von Metriken, Namespaces und Dimensionen wird Groß- und Kleinschreibung beachtet.

SELECT

Erforderlich Gibt die Funktion an, die zum Aggregieren von Beobachtungen in jedem Zeit-Bucket verwendet werden soll (durch den angegebenen Zeitraum festgelegt). Gibt auch den Namen der abzufragenden Metrik an.

Die gültigen Werte für FUNCTION sind AVG, COUNT, MAX, MIN und SUM.

  • AAVG berechnet den Durchschnitt der Beobachtungen, die mit der Abfrage übereinstimmen.

  • COUNT gibt die Anzahl der Beobachtungen zurück, die mit der Abfrage übereinstimmen.

  • MAX gibt den Maximalwert der Beobachtungen zurück, die mit der Abfrage übereinstimmen.

  • MIN gibt den Minimalwert der Beobachtungen zurück, die mit der Abfrage übereinstimmen.

  • SUM berechnet die Summe der Beobachtungen, die mit der Abfrage übereinstimmen.

FROM

Erforderlich Gibt die Quelle der Metrik an. Sie können entweder den Metrik-Namespace angeben, der die abzufragende Metrik enthält, oder eine SCHEMA-Tabellenfunktion. Beispiele für Metrik-Namespaces sind "AWS/EC2", "AWS/Lambda" und Metrik-Namespaces, die Sie für Ihre benutzerdefinierten Metriken erstellt haben.

Metrik-Namespaces, die / enthalten oder jedes andere Zeichen, das kein Buchstabe, keine Zahl und kein Unterstrich ist, müssen von doppelten Anführungszeichen umgeben sein. Weitere Informationen finden Sie unter Was braucht Anführungszeichen oder Escape-Zeichen?.

SCHEMA

Eine optionale Tabellenfunktion, die innerhalb einer FROM-Klausel verwendet werden kann. Verwenden Sie SCHEMA, um die Abfrageergebnisse nur auf die Metriken zu reduzieren, die genau mit einer Liste von Dimensionen übereinstimmen, oder auf Metriken, die keine Dimensionen haben.

Wenn Sie eine SCHEMA-Klausel verwenden, muss diese mindestens ein Argument enthalten. Das erste Argument muss der Metrik-Namespace sein, der abgefragt wird. Wenn Sie SCHEMA nur mit diesem Namespace-Argument angeben, werden die Ergebnisse nur auf Metriken beschränkt, die keine Dimensionen haben.

Wenn Sie SCHEMA mit zusätzlichen Argumenten angeben, müssen die zusätzlichen Argumente nach dem Namespace-Argument Bezeichnungsschlüssel sein. Bezeichnungsschlüssel müssen Dimensionsnamen sein. Wenn Sie einen oder mehrere dieser Bezeichnungsschlüssel angeben, werden die Ergebnisse nur auf die Metriken beschränkt, die genau diesen Dimensionssatz aufweisen. Die Reihenfolge dieser Bezeichnungsschlüssel spielt dabei keine Rolle.

Zum Beispiel:

  • SELECT AVG(CPUUtilization) FROM "AWS/EC2" entspricht allen CPUUtilization-Metriken im AWS/EC2-Namespace, unabhängig von ihren Dimensionen, und gibt eine einzelne aggregierte Zeitreihe zurück.

  • SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2") entspricht nur den CPUUtilization-Metriken im AWS/EC2-Namespace, für die keine Dimensionen definiert sind.

  • SELECT AVG (CPUUtilization) FROM SCHEMA („AWS/EC2", InstanceId) entspricht nur den CPUUtilization Metriken, für die berichtet wurde, CloudWatch mit genau einer Dimension,. InstanceId

  • SELECT SUM (RequestCount) FROM SCHEMA („aws/ApplicationELB“ LoadBalancer, AvailabilityZone) entspricht nur den RequestCount Metriken, an die CloudWatch von gemeldet wurde, AWS/ApplicationELB mit genau zwei Dimensionen, und. LoadBalancer AvailabilityZone

WHERE

Optional. Filtert die Ergebnisse nur nach den Metriken, die mit dem angegebenen Ausdruck übereinstimmen, wobei bestimmte Bezeichnungswerte für einen oder mehrere Bezeichnungsschlüssel verwendet werden. Beispielsweise filtert WHERE InstanceType = 'c3.4xlarge' die Ergebnisse nur c3.4xlarge nach Instance-Typen und WHERE! InstanceType = 'c3.4xlarge' filtert die Ergebnisse nach allen Instanztypen außer. c3.4xlarge

Wenn Sie eine Abfrage in einem Überwachungskonto ausführen, können Sie WHERE AWS.AccountId verwenden, um die Ergebnisse auf das von Ihnen angegebene Konto zu beschränken. WHERE AWS.AccountId=444455556666 fragt beispielsweise nur Metriken von Konto 444455556666 ab. Um Ihre Abfrage nur auf Metriken im Überwachungskonto selbst zu beschränken, verwenden Sie WHERE AWS.AccountId=CURRENT_ACCOUNT_ID().

Bezeichnungswerte müssen immer mit einfachen Anführungszeichen eingeschlossen sein.

Unterstützte Operatoren

Die WHERE-Klausel unterstützt die folgenden Operatoren:

  • = Der Bezeichnungswert muss mit der angegebenen Zeichenfolge übereinstimmen.

  • != Der Bezeichnungswert muss nicht mit der angegebenen Zeichenfolge übereinstimmen.

  • AND Beide angegebenen Bedingungen müssen zutreffend sein, damit sie übereinstimmen. Sie können mehrere AND-Schlüsselwörter verwenden, um zwei oder mehr Bedingungen anzugeben.

GROUP BY

Optional. Gruppiert die Abfrageergebnisse in mehrere Zeitreihen, die jeweils einem anderen Wert für den angegebenen Bezeichnungsschlüssel oder die angegebenen Schlüssel entsprechen. Beispielsweise gibt GROUP BY InstanceId für jeden Wert eine andere Zeitreihe für jeden Wert von InstanceId zurück. Bei Verwendung von GROUP BY ServiceName, Operation wird eine andere Zeitreihe für jede mögliche Kombination der Werte von ServiceName und Operation erstellt.

Mit der Klausel GROUP BY werden die Ergebnisse standardmäßig in alphabetischer aufsteigender Reihenfolge angeordnet, wobei die in der Klausel GROUP BY angegebenen Bezeichnungssequenzen verwendet werden. Fügen Sie die Klausel ORDER BY zu Ihrer Anfrage hinzu, um die Reihenfolge der Ergebnisse zu ändern.

Wenn Sie eine Abfrage in einem Überwachungskonto ausführen, können Sie GROUP BY AWS.AccountId verwenden, um die Ergebnisse anhand der Konten zu gruppieren, von denen sie stammen.

Anmerkung

Wenn einige der übereinstimmenden Metriken keinen bestimmten Bezeichnungsschlüssel enthalten, der in der Klausel GROUP BY angegeben ist, wird eine Nullgruppe mit dem Namen Other zurückgegeben. Wenn Sie beispielsweise GROUP BY ServiceName, Operation angeben und einige der zurückgegebenen Metriken ServiceName nicht als Dimension enthalten, werden diese Metriken so angezeigt, als hätten sie Other als Wert für ServiceName.

ORDER BY

Optional. Gibt die Reihenfolge an, die für die zurückgegebene Zeitreihe verwendet werden soll, wenn die Abfrage mehr als eine Zeitreihe zurückgibt. Die Reihenfolge basiert auf den Werten, die von der FUNCTION gefunden werden, die Sie in der Klausel ORDER BY angegeben haben. Die FUNCTION wird verwendet, um einen einzelnen Skalarwert aus jeder zurückgegebenen Zeitreihe zu berechnen. Dieser Wert wird verwendet, um die Reihenfolge zu bestimmen.

Sie geben auch an, ob aufsteigend (ASC) oder absteigend (DESC) verwendet werden soll. Wenn Sie dies auslassen, ist die Standardeinstellung aufsteigend (ASC).

Fügen Sie zum Beispiel die Klausel ORDER BY MAX() DESC hinzu, werden die Ergebnisse nach dem maximalen Datenpunkt in absteigender Reihenfolge sortiert, der innerhalb des Zeitraums beobachtet wird. Das bedeutet, dass die Zeitreihe mit dem höchsten maximalen Datenpunkt zuerst zurückgegeben wird.

Die gültigen Funktionen, die innerhalb der Klausel ORDER BY verwendet werden, lauten AVG(), COUNT(), MAX(), MIN() und SUM().

Wenn Sie die Klausel ORDER BY mit der Klausel LIMIT verwenden, ist die resultierende Abfrage eine „Top N“-Abfrage. ORDER BY ist auch nützlich für Abfragen, die möglicherweise eine große Anzahl von Metriken zurückgeben, da keine Abfrage mehr als 500 Zeitreihen zurückgeben kann. Wenn eine Abfrage mehr als 500 Zeitreihen entspricht und Sie die Klausel ORDER BY verwenden, werden die Zeitreihen sortiert und die 500 Zeitreihen, die in der Sortierreihenfolge zuerst stehen, werden zurückgegeben.

LIMIT

Optional. Beschränkt die Anzahl der von der Abfrage zurückgegebenen Zeitreihen auf den von Ihnen angegebenen Wert. Der Maximalwert, den Sie angeben können, ist 500, und eine Abfrage, die kein LIMIT angibt, kann ebenfalls maximal 500 Zeitreihen zurückgeben.

Wenn Sie die Klausel LIMIT mit der Klausel ORDER BY verwenden, erhalten Sie eine „Top N“-Abfrage.

Was braucht Anführungszeichen oder Escape-Zeichen?

In einer Abfrage müssen Bezeichnungswerte immer mit einfachen Anführungszeichen eingeschlossen sein. Zum Beispiel SELECT MAX (CPUUtilization) FROM „AWS/EC2" WHERE = ''. AutoScalingGroupName my-production-fleet

Metrik-Namespaces, Metriknamen und Bezeichnungsschlüssel, die andere Zeichen als Buchstaben, Zahlen und Unterstriche (_) enthalten, müssen mit doppelten Anführungszeichen eingeschlossen sein. Beispiel: SELECT MAX("My.Metric").

Wenn eine dieser Abfragen ein doppeltes Anführungszeichen oder ein einzelnes Anführungszeichen enthält (z. B. Bytes"Input"), muss jedem Anführungszeichen ein umgekehrter Schrägstrich vorangestellt werden, siehe SELECT AVG("Bytes\"Input\"").

Wenn ein Metrik-Namespace, ein Metrikname oder ein Bezeichnungsschlüssel ein Wort enthält, das ein reserviertes Schlüsselwort in Metrics Insights ist, muss dieses auch in doppelten Anführungszeichen eingeschlossen sein. Wenn Sie beispielsweise eine Metrik mit dem Namen LIMIT haben, würden Sie SELECT AVG("LIMIT") benutzen. Es ist auch möglich, einen Namespace, einen Metriknamen oder eine Bezeichnung in doppelte Anführungszeichen einzuschließen, auch wenn kein reserviertes Schlüsselwort enthalten ist.

Eine vollständige Liste der reservierten Wörter finden Sie unter Reservierte Schlüsselwörter.

Eine umfangreiche Abfrage erstellen, Schritt für Schritt

Dieser Abschnitt veranschaulicht das Erstellen eines vollständigen Beispiels, das Schritt für Schritt alle möglichen Klauseln verwendet.

Wir beginnen mit der folgenden Abfrage, die alle RequestCount-Metriken im Application Load Balancer aggregiert, die mit den beiden Dimensionen LoadBalancer und AvailabilityZone gesammelt werden.

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)

Wenn wir nun Metriken von einem bestimmten Load Balancer sehen möchten, können wir die Klausel WHERE hinzufügen, um die Metriken zu beschränken, die nur für die Metriken zurückgegeben werden, bei denen der Wert der LoadBalancer-Dimension app/load-balancer-1 ist.

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1'

Die vorhergehende Abfrage aggregiert die RequestCount-Metriken aus allen Availability Zones für diesen Load Balancer in eine Zeitreihe. Wenn wir verschiedene Zeitreihen für jede Availability Zone sehen möchten, können wir die Klausel GROUP BY hinzufügen.

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' GROUP BY AvailabilityZone

Als Nächstes möchten wir diese Ergebnisse möglicherweise so anordnen, dass zuerst die höchsten Werte angezeigt werden. Die folgende ORDER BY-Klausel ordnet die Zeitreihe in absteigender Reihenfolge um den Maximalwert an, den jede Zeitreihe während des Abfragezeitraums gemeldet hat:

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' GROUP BY AvailabilityZone ORDER BY MAX() DESC

Wenn wir in erster Linie an einer „Top N“-Abfrage interessiert sind, können wir eine LIMIT-Klausel verwenden. Dieses letzte Beispiel beschränkt die Ergebnisse auf die Zeitreihe mit den fünf höchsten MAX-Werten.

SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' GROUP BY AvailabilityZone ORDER BY MAX() DESC LIMIT 5

Beispiele kontoübergreifender Abfragen

Diese Beispiele sind gültig, wenn sie in einem Konto ausgeführt werden, das als Überwachungskonto für kontenübergreifende Observability eingerichtet wurde. CloudWatch

Im folgenden Beispiel werden alle Amazon-EC2-Instances im Quellkonto 123456789012 durchsucht und der Durchschnitt zurückgegeben.

SELECT AVG(CpuUtilization) FROM "AWS/EC2" WHERE AWS.AccountId ='123456789012'

Im folgenden Beispiel wird die CPUUtilization-Metrik in AWS/EC2 in allen verknüpften Quellkonten abgefragt und die Ergebnisse nach Konto-ID und Instance-Typ gruppiert.

SELECT AVG(CpuUtilization) FROM "AWS/EC2" GROUP BY AWS.AccountId, InstanceType

Im folgenden Beispiel wird die CPUUtilization im Überwachungskonto selbst abgefragt.

SELECT AVG(CpuUtilization) FROM "AWS/EC2" WHERE AWS.AccountId = CURRENT_ACCOUNT_ID()