Componenti e sintassi della query di Metrics Insights - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Componenti e sintassi della query di Metrics Insights

CloudWatch La sintassi di Metrics Insights è la seguente.

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

Le possibili clausole in una query Metrics Insights sono le seguenti. Nessuna delle parole chiave è sensibile alle maiuscole e minuscole, ma gli identificatori come i nomi dei parametri, gli spazi dei nomi e le dimensioni sono sensibili alle maiuscole e minuscole.

SELECT

Obbligatorio. Specifica la funzione da utilizzare per aggregare le osservazioni in ogni bucket temporale (determinato dal periodo fornito). Specifica inoltre il nome del parametro su cui effettuare la query.

I valori validi per FUNCTION (FUNZIONE) sono AVG, COUNT, MAX, MIN, e SUM.

  • AVG calcola la media delle osservazioni corrispondenti alla query.

  • COUNT restituisce il conteggio delle osservazioni corrispondenti alla query.

  • MAX restituisce il valore massimo delle osservazioni corrispondenti alla query.

  • MIN restituisce il valore minimo delle osservazioni corrispondenti alla query.

  • SUM calcola la somma delle osservazioni corrispondenti alla query.

FROM

Obbligatorio. Specifica la fonte del parametro. È possibile specificare lo spazio dei nomi del parametro che contiene il parametro che deve essere sottoposto a query o una funzione di tabella SCHEMA. Esempi di spazio dei nomi di parametro includono "AWS/EC2", "AWS/Lambda" e gli spazi dei nomi dei parametri che hai creato per i parametri personalizzati.

Gli spazi dei nomi del parametro che includono / o qualsiasi altro carattere che non sia una lettera, un numero o un carattere di sottolineatura devono essere racchiusi tra virgolette doppie. Per ulteriori informazioni, consulta Cosa ha bisogno di virgolette o caratteri di escape?.

SCHEMA

Una funzione di tabella opzionale che può essere utilizzata all'interno di una clausola FROM (DA). Utilizza SCHEMA per esaminare i risultati della query solo sui parametri che corrispondono esattamente a un elenco di dimensioni o ai parametri che non hanno dimensioni.

Se si utilizza una clausola SCHEMA, deve contenere almeno un argomento e questo primo argomento deve essere lo spazio dei nomi dei parametri da sottoporre a query. Se si specifica SCHEMA solo con questo argomento dello spazio dei nomi, i risultati vengono assegnati solo a parametri che non hanno dimensioni.

Se si specifica SCHEMA con argomenti aggiuntivi, gli argomenti aggiuntivi dopo l'argomento dello spazio dei nomi devono essere chiavi di etichetta. Le chiavi di etichetta devono essere nomi di dimensione. Se si specificano una o più di queste chiavi di etichetta, i risultati vengono assegnati solo ai parametri che hanno quel set esatto di dimensioni. L'ordine di queste chiavi di etichetta non è importante.

Ad esempio:

  • SELECT AVG(CPUUtilization) FROM "AWS/EC2" (SELEZIONA AVG (Utilizzo della CPU) da “AWS/EC2")) corrisponde a tutti i parametri CPUUtilization nello spazio dei nomi AWS/EC2, indipendentemente dalle loro dimensioni, e restituisce una singola serie temporale aggregata.

  • SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2") (SELEZIONA AVG (Utilizzo della CPU) DALLO SCHEMA ("AWS/EC2"))corrisponde solo ai parametri CPUUtilization nello spazio dei nomi AWS/EC2 che non presentano alcuna dimensione definita.

  • SELECT AVG (CPUUtilization) FROM SCHEMA («AWS/EC2", InstanceId) corrisponde solo alle CPUUtilization metriche riportate con esattamente una dimensione,. CloudWatch InstanceId

  • SELECT SUM (RequestCount) FROM SCHEMA («AWS/ApplicationElb» LoadBalancer, AvailabilityZone) corrisponde solo alle RequestCount metriche riportate CloudWatch da from AWS/ApplicationELB con esattamente due dimensioni e. LoadBalancer AvailabilityZone

WHERE

Facoltativo. Filtra i risultati solo con i parametri che corrispondono all'espressione specificata utilizzando valori di etichetta specifici per una o più chiavi di etichetta. Ad esempio, WHERE InstanceType = 'c3.4xlarge' filtra i risultati solo in base ai tipi di istanza e WHERE! c3.4xlarge InstanceType = 'c3.4xlarge' filtra i risultati in base a tutti i tipi di istanze tranne. c3.4xlarge

Quando esegui una query in un account di monitoraggio, puoi utilizzare WHERE AWS.AccountId per limitare i risultati solo all'account specificato. Ad esempio, WHERE AWS.AccountId=444455556666 interroga i parametri solo dall'account 444455556666. Per limitare la tua query ai soli parametri dell'account di monitoraggio stesso, usa WHERE AWS.AccountId=CURRENT_ACCOUNT_ID().

I valori delle etichette devono sempre essere racchiusi con virgolette singole.

Operatori supportati

La clausola WHERE (DOVE) supporta i seguenti operatori:

  • = Il valore dell'etichetta deve corrispondere alla stringa specificata.

  • ! = Il valore dell'etichetta non deve corrispondere alla stringa specificata.

  • E Entrambe le condizioni specificate devono essere vere per corrispondere. È possibile utilizzare più parole chiave AND (E) per specificare due o più condizioni.

GROUP BY

Facoltativo. Raggruppa i risultati della query in più serie temporali, ognuna corrispondente a un valore diverso per la chiave o le chiavi dell'etichetta specificate. Ad esempio, l'utilizzo di GROUP BY InstanceId restituisce una serie temporale diversa per ogni valore di InstanceId. L'utilizzo di GROUP BY ServiceName, Operation crea una serie temporale diversa per ogni possibile combinazione dei valori di ServiceName e Operation.

Con una clausola GROUP BY (RAGGRUPPA PER), per impostazione predefinita, i risultati sono ordinati in ordine alfabetico crescente, utilizzando la sequenza di etichette specificata nella clausola GROUP BY (RAGGRUPPA PER). Per modificare l'ordine dei risultati, aggiungere una clausola ODER BY (ORDINA PER) alla tua query.

Quando esegui una query in un account di monitoraggio, puoi utilizzare GROUP BY AWS.AccountId per raggruppare i risultati in base agli account da cui provengono.

Nota

Se alcune delle metriche corrispondenti non includono una chiave di etichetta specifica specificata nella clausola GROUP BY (RAGGRUPPA PER), viene restituito un gruppo nullo denominato Other. Ad esempio, se si specifica GROUP BY ServiceName, Operation e alcuni dei parametri restituiti non includonoServiceName come dimensione, quindi tali parametri vengono visualizzati come aventi Other come valore per ServiceName.

ORDER BY

Facoltativo. Specifica l'ordine da utilizzare per le serie temporali restituite, se la query restituisce più di una serie temporale. L'ordine è basato sui valori trovati dalla FUNCTION (FUNZIONE) specificata nella clausola ORDER BY (ORDINA PER). La FUNCTION (FUNZIONE) viene utilizzata per calcolare un singolo valore scalare da ogni serie temporale restituita e tale valore viene utilizzato per determinare l'ordine.

È inoltre necessario specificare se utilizzare l'ordine crescente ASC o decrescente DESC. Se ometti questo parametro, il valore di default è crescente ASC.

Ad esempio, aggiungendo una clausola ORDER BY MAX() DESC ordina i risultati in base al punto dati massimo osservato nell'intervallo di tempo, in ordine decrescente: il che significa che la serie temporale che ha il punto dati massimo viene restituita per prima.

Le funzioni valide da utilizzare all'interno di una clausola ORDER BY (ORDINA PER) sono AVG(), COUNT(), MAX(), MIN() e SUM().

Se utilizzi una clausola ORDER BY (ORDINA PER) con una clausola LIMIT (LIMITE), la query risultante è una query "Top N". ORDER BY (ORDINA PER) è utile anche per le query che potrebbero restituire un numero elevato di metriche, poiché ogni query può restituire non più di 500 serie temporali. Se una query corrisponde a più di 500 serie temporali e si utilizza una clausola ORDER BY (ORDINA PER), le serie temporali vengono ordinate e quindi le 500 serie temporali che vengono prima nell'ordinamento sono quelle che vengono restituite.

LIMIT

Facoltativo. Limita il numero di serie temporali restituite dalla query al valore specificato. Il valore massimo che è possibile specificare è 500 e una query che non specifica un LIMIT (LIMITE) può anche restituire non più di 500 serie temporali.

L'utilizzo di una clausola LIMIT (LIMITE) con una clausola ORDER BY (ORDINA PER) fornisce una query "Top N".

Cosa ha bisogno di virgolette o caratteri di escape?

In una query, i valori delle etichette devono sempre essere racchiusi tra virgolette singole. Ad esempio, SELECT MAX (CPUUtilization) FROM «AWS/EC2" WHERE = ''. AutoScalingGroupName my-production-fleet

Gli spazi dei nomi dei parametri, i nomi dei paramentri e le chiavi di etichetta contenenti caratteri diversi da lettere, numeri e trattino di sottolineatura (_) devono essere racchiusi tra virgolette doppie. Ad esempio: SELECT MAX ("My.Metric").

Se uno di questi contiene una doppia virgoletta o una virgoletta singola (come Bytes"Input"), è necessario far precedere ogni virgoletta da una barra rovesciata, come in SELECT AVG("Bytes\"Input\"").

Se uno spazio dei nomi del parametro, un nome del parametro o una chiave etichetta contiene una parola che è una parola chiave riservata in Metrics Insights, queste devono anche essere racchiuse tra virgolette doppie. Ad esempio, se si dispone di un parametro denominato LIMIT, si utilizza SELECT AVG("LIMIT"). È inoltre valido racchiudere qualsiasi spazio dei nomi, nome del parametro o etichetta tra virgolette doppie anche se non include una parola chiave riservata.

Per un elenco completo delle parole chiave riservate, consulta Parole chiave riservate.

Creazione dettagliata di una query approfondita

Questa sezione illustra la creazione di un esempio completo che utilizza tutte le possibili clausole, in maniera dettagliata.

Iniziamo con la seguente query, che aggrega tutti i parametri di Application Load Balancer RequestCount raccolti con entrambe le dimensioni LoadBalancer e AvailabilityZone.

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

Ora, se vogliamo vedere le metriche solo da uno specifico load balancer, possiamo aggiungere una clausola WHERE (DOVE) per limitare i parametri restituiti solo ai parametri in cui il valore della dimensione LoadBalancer è app/load-balancer-1.

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

La query precedente aggrega i parametri RequestCount provenienti da tutte le zone di disponibilità per questo load balancer in una serie temporale. Se vogliamo vedere diverse serie temporali per ciascuna zona di disponibilità, possiamo aggiungere una clausola GROUP BY (RAGGRUPPA PER).

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

Successivamente, potremmo ordinare questi risultati per vedere prima i valori più alti. La seguente clausola ORDER BY (ORDINA PER) ordina le serie temporali in ordine decrescente, in base al valore massimo riportato da ogni serie temporale durante l'intervallo di tempo della query:

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

Infine, se siamo principalmente interessati a un tipo di query "Top N", possiamo utilizzare una clausola LIMIT (LIMITE). Questo esempio finale limita i risultati solo alle serie temporali con i cinque valori MAX più alti.

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

Esempi di query tra account

Questi esempi sono validi se eseguiti in un account configurato come account di monitoraggio nell'osservabilità tra account. CloudWatch

Il seguente esempio cerca tutte le istanze Amazon EC2 nell'account di origine 123456789012 e restituisce la media.

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

L'esempio seguente interroga il parametro CPUUtilization in AWS/EC2 in tutti gli account di origine collegati e raggruppa i risultati per ID account e tipo di istanza.

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

L'esempio seguente interroga CPUUtilization nell'account di monitoraggio stesso.

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