OpenSearch Linguaggio di interrogazione strutturato (SQL) - CloudWatch Registri Amazon

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à.

OpenSearch Linguaggio di interrogazione strutturato (SQL)

Questa sezione contiene un'introduzione di base all'interrogazione dei CloudWatch log utilizzando OpenSearch SQL. Fornisce un'opzione familiare se sei abituato a lavorare con database relazionali. OpenSearch SQL offre un sottoinsieme di funzionalità SQL, il che lo rende una buona scelta per eseguire query ad hoc e attività di analisi dei dati. Con OpenSearch SQL, è possibile utilizzare comandi come SELECT, FROM, WHERE, GROUP BY, HAVING e vari altri comandi e funzioni SQL. È possibile eseguire JOINs più gruppi di log, correlare i dati tra gruppi di log utilizzando sottoquery e utilizzare il ricco set di funzioni SQL JSON, matematiche, di stringa, condizionali e di altro tipo per eseguire analisi approfondite sui dati di log e di sicurezza.

È possibile utilizzare OpenSearch SQL solo per le query dei gruppi di log nella Standard Log Class.

Nota

Nella tabella seguente sono elencati i comandi e le funzioni SQL supportati nei CloudWatch registri. Per informazioni su tutti i comandi OpenSearch SQL, inclusa la sintassi, vedere Comandi SQL supportati nella OpenSearch Service Developer Guide.

Per informazioni sugli altri linguaggi di query che è possibile utilizzare, vedere CloudWatch Logs Insights, OpenSearch Service PPL e. CloudWatch Metrics Insights

Comandi SQL supportati

Nota

Nella colonna della query di esempio, <logGroup> sostituiscila secondo necessità a seconda della fonte di dati su cui stai interrogando.

Comando o funzione Query di esempio Descrizione

SELECT

SELECT `@message`, Operation FROM `LogGroupA`

Visualizza i valori proiettati.

FROM

SELECT `@message`, Operation FROM `LogGroupA`

Clausola incorporata che specifica le tabelle o le viste di origine da cui recuperare i dati, supportando vari tipi di join e sottoquery.

WHERE

SELECT * FROM `LogGroupA` WHERE Operation = 'x'

Filtra gli eventi di registro in base ai criteri di campo forniti.

GROUP BY

SELECT `@logStream`, COUNT(*) as log_count FROM `LogGroupA` GROUP BY `@logStream`

I gruppi registrano gli eventi in base alla categoria e trovano la media in base alle statistiche.

HAVING

SELECT `@logStream`, COUNT(*) as log_count FROM `LogGroupA` GROUP BY `@logStream` HAVING log_count > 100

Filtra i risultati in base alle condizioni di raggruppamento.

ORDER BY

SELECT * FROM `LogGroupA` ORDER BY `@timestamp` DESC

Ordina i risultati in base ai campi della clausola ORDER BY. È possibile ordinare in ordine decrescente o crescente.

JOIN

SELECT A.`@message`, B.`@timestamp`FROM `LogGroupA` as A INNER JOIN `LogGroupB` as B ON A.`requestId` = B.`requestId`

Unisce i risultati di due tabelle in base a campi comuni. È necessario specificare Inner JOIN o Left Outer Join

LIMIT

Select * from `LogGroupA` limit 10

Limita i risultati della query visualizzati alle prime N righe.

Funzioni stringa

SELECT upper(Operation) , lower(Operation), Operation FROM `LogGroupA`

Funzioni integrate in SQL in grado di manipolare e trasformare stringhe e dati di testo all'interno di query SQL. Ad esempio, la conversione di maiuscole e minuscole, la combinazione di stringhe, l'estrazione di parti e la pulizia del testo.

Funzioni di data

SELECT current_date() as today, date_add(current_date(), 30) as thirty_days_later, last_day(current_date()) as month_end FROM `LogGroupA`

Funzioni integrate per la gestione e la trasformazione dei dati di data e ora nelle query SQL. Ad esempio, date_add, date_format, datediff e current_date.

Funzioni condizionali

SELECT Operation, IF(Error > 0, 'High', 'Low') as error_category FROM `LogGroupA`;

Funzioni integrate che eseguono azioni in base a condizioni specifiche o che valutano le espressioni in modo condizionale. Ad esempio, CASE e IF.

Funzioni di aggregazione

SELECT AVG(bytes) as bytesWritten FROM `LogGroupA`

Funzioni integrate che eseguono calcoli su più righe per produrre un unico valore riepilogato. Ad esempio, SUM, COUNT, AVG, MAX e MIN.

Funzioni JSON

SELECT get_json_object(json_column, '$.name') as name FROM `LogGroupA`

Funzioni integrate per l'analisi, l'estrazione, la modifica e l'interrogazione di dati in formato JSON all'interno delle query SQL (ad esempio, from_json, to_json, get_json_object, json_tuple) che consentono la manipolazione delle strutture JSON nei set di dati.

Funzioni di array

SELECT scores, size(scores) as length, array_contains(scores, 90) as has_90 FROM `LogGroupA`;

Funzioni integrate per lavorare con colonne di tipo array nelle query SQL, che consentono operazioni come l'accesso, la modifica e l'analisi dei dati dell'array (ad esempio, size, explode, array_contains).

Funzioni finestra

SELECT field1, field2, RANK() OVER (ORDER BY field2 DESC) as field2Rank FROM `LogGroupA`;

Funzioni integrate che eseguono calcoli su un insieme specifico di righe relative alla riga (finestra) corrente, abilitando operazioni come la classificazione, l'esecuzione dei totali e le medie mobili. Ad esempio, ROW_NUMBER, RANK, LAG e LEAD

Funzioni di conversione

SELECT CAST('123' AS INT) as converted_number, CAST(123 AS STRING) as converted_string FROM `LogGroupA`

Funzioni integrate per la conversione dei dati da un tipo all'altro all'interno delle query SQL, che consentono trasformazioni dei tipi di dati e conversioni di formato. Ad esempio, CAST, TO_DATE, TO_TIMESTAMP e BINARY.

Funzioni di predicato

SELECT scores, size(scores) as length, array_contains(scores, 90) as has_90 FROM `LogGroupA`;

Funzioni integrate che valutano le condizioni e restituiscono valori booleani (vero/falso) in base a criteri o modelli specifici. Ad esempio, IN, LIKE, BETWEEN, IS NULL ed EXISTS.

Seleziona più gruppi di log

SELECT lg1.field1, lg1.field2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'])` as lg1 where lg1.field3= "Success"

Consente di specificare più gruppi di log in un'istruzione SELECT

SQL supportato per le multi-log-group interrogazioni

Per supportare il caso d'uso per l'interrogazione di più gruppi di log in SQL, è possibile utilizzare il logGroups comando. Utilizzando questa sintassi, è possibile interrogare più gruppi di log specificandoli nel comando FROM.

Sintassi:

`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )

In questa sintassi, è possibile specificare fino a 50 gruppi di log nel parametro. logGroupIdentifier Per fare riferimento ai gruppi di log in un account di monitoraggio, usa ARNs al posto dei LogGroup nomi.

Query di esempio:

SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'

La seguente sintassi che coinvolge più gruppi di log dopo l'FROMistruzione NON è supportata durante l' CloudWatch interrogazione dei log.

SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'

Restrizioni

Le seguenti restrizioni si applicano quando si utilizza OpenSearch SQL per eseguire query in CloudWatch Logs Insights.

  • È possibile includere un solo JOIN in un'istruzione SELECT.

  • È supportato solo un livello di sottoquery annidate.

  • Le query di istruzioni multiple separate da punto e virgola (;) non sono supportate.

  • Le query contenenti nomi di campo identici ma che differiscono solo per maiuscole e minuscole (ad esempio field1 e) non sono supportate. FIELD1

    Ad esempio, la seguente query non è supportata:

    Select AWSAccountId, AwsAccountId from LogGroup

    Tuttavia, la seguente query è supportata perché il nome del campo (@logStream) è identico in entrambi i gruppi di log:

    Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id
  • Le funzioni e le espressioni devono operare sui nomi dei campi e far parte di un'istruzione SELECT con un gruppo di log specificato nella clausola FROM.

    Ad esempio, questa query non è supportata:

    SELECT cos(10) FROM LogGroup

    Questa interrogazione è supportata:

    SELECT cos(field1) FROM LogGroup
  • Quando usi i comandi SQL o PPL, racchiudi alcuni campi tra i backtick per interrogarli correttamente. I backtick sono necessari per i campi con caratteri speciali (non alfabetici e non numerici). Ad esempio, racchiude e inserisce i segni di spunta rovesciati@message. Operation.Export Test::Field Non è necessario racchiudere campi con nomi puramente alfabetici nei backtick.

    Query di esempio con campi semplici:

    SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;

    Query simile con backtick aggiunti:

    SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;