Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
OpenSearch Langage SQL
Cette section contient une introduction de base à l'interrogation des CloudWatch journaux à l'aide de OpenSearch SQL. Il s'agit d'une option familière si vous avez l'habitude de travailler avec des bases de données relationnelles. OpenSearch SQL offre un sous-ensemble de fonctionnalités SQL, ce qui en fait un bon choix pour effectuer des requêtes ad hoc et des tâches d'analyse de données. Avec OpenSearch SQL, vous pouvez utiliser des commandes telles que SELECT, FROM, WHERE, GROUP BY, HAVING et diverses autres commandes et fonctions SQL. Vous pouvez exécuter des tâches JOINs dans différents groupes de journaux, corréler les données entre les groupes de journaux à l'aide de sous-requêtes et utiliser le riche ensemble de fonctions JSON, mathématiques, de chaîne, conditionnelles et autres fonctions SQL pour effectuer une analyse approfondie des données de journal et de sécurité.
Vous ne pouvez utiliser OpenSearch SQL que pour les requêtes de groupes de journaux dans la classe de journal standard. Lorsque vous sélectionnez les groupes de journaux à interroger, vous pouvez sélectionner un seul groupe de journaux, un ensemble de groupes de journaux partageant un préfixe ou sélectionner tous les groupes de journaux
Note
Le tableau suivant répertorie les commandes et fonctions SQL prises en charge dans les CloudWatch journaux. Pour plus d'informations sur toutes les commandes OpenSearch SQL, y compris la syntaxe, consultez la section Commandes SQL prises en charge dans le Guide du développeur de OpenSearch services.
Commandes SQL prises en charge
Note
Dans la colonne d'exemple de requête, remplacez le cas
échéant en fonction de la source de données que vous interrogez. <logGroup>
Commande ou fonction | Exemple de requête | Description |
---|---|---|
SELECT |
|
Affiche les valeurs projetées. |
FROM |
|
Clause intégrée qui spécifie les tables ou les vues sources à partir desquelles récupérer les données, prenant en charge différents types de jointures et de sous-requêtes. |
WHERE |
|
Les filtres enregistrent les événements en fonction des critères de champ fournis. |
GROUP BY |
|
Les groupes enregistrent les événements par catégorie et trouvent la moyenne en fonction des statistiques. |
HAVING |
|
Filtre les résultats en fonction des conditions de regroupement. |
ORDER BY |
|
Trie les résultats en fonction des champs de la clause ORDER BY. Vous pouvez trier par ordre décroissant ou croissant. |
JOIN |
|
Joint les résultats de deux tables sur la base de champs communs. La jointure interne ou la jointure externe gauche doivent être spécifiées |
LIMIT |
|
Limite les résultats de requête affichés aux N premières lignes. |
Fonctions de chaîne |
|
Fonctions intégrées dans SQL permettant de manipuler et de transformer des chaînes de caractères et des données textuelles dans des requêtes SQL. Par exemple, convertir des majuscules, combiner des chaînes, extraire des parties et nettoyer du texte. |
Fonctions de date |
|
Fonctions intégrées pour gérer et transformer les données de date et d'horodatage dans les requêtes SQL. Par exemple, date_add, date_format, datediff et current_date. |
Fonctions conditionnelles |
|
Fonctions intégrées qui exécutent des actions en fonction de conditions spécifiées ou qui évaluent les expressions de manière conditionnelle. Par exemple, CASE et IF. |
Fonctions d'agrégation |
|
Fonctions intégrées qui effectuent des calculs sur plusieurs lignes pour produire une seule valeur résumée. Par exemple, SUM, COUNT, AVG, MAX et MIN. |
Fonctions JSON |
|
Fonctions intégrées pour analyser, extraire, modifier et interroger des données au format JSON dans des requêtes SQL (par exemple, from_json, to_json, get_json_object, json_tuple) permettant de manipuler les structures JSON dans les ensembles de données. |
Fonctions de tableau |
|
Fonctions intégrées permettant de travailler avec des colonnes de type tableau dans les requêtes SQL, permettant des opérations telles que l'accès, la modification et l'analyse de données de tableau (par exemple, size, explode, array_contains). |
Fonctions de fenêtrage |
|
Fonctions intégrées qui effectuent des calculs sur un ensemble spécifique de lignes liées à la ligne actuelle (fenêtre), permettant des opérations telles que le classement, les totaux cumulés et les moyennes mobiles. Par exemple, ROW_NUMBER, RANK, LAG et LEAD |
Fonctions de conversion |
|
Fonctions intégrées pour convertir les données d'un type à un autre dans les requêtes SQL, permettant des transformations de type de données et des conversions de format. Par exemple, CAST, TO_DATE, TO_TIMESTAMP et BINARY. |
Fonctions de prédicat |
|
Fonctions intégrées qui évaluent les conditions et renvoient des valeurs booléennes (vrai/faux) en fonction de critères ou de modèles spécifiés. Par exemple, IN, LIKE, BETWEEN, IS NULL et EXISTS. |
Sélectionnez plusieurs groupes de journaux |
|
Vous permet de spécifier plusieurs groupes de journaux dans une instruction SELECT |
SQL pris en charge pour les multi-log-group requêtes
Pour prendre en charge le cas d'utilisation permettant d'interroger plusieurs groupes de journaux dans SQL, vous pouvez utiliser la logGroups
commande. À l'aide de cette syntaxe, vous pouvez interroger plusieurs groupes de journaux en les spécifiant dans la commande FROM.
Syntaxe :
`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )
Dans cette syntaxe, vous pouvez spécifier jusqu'à 50 groupes de journaux dans le logGroupIdentifier
paramètre. Pour référencer des groupes de journaux dans un compte de surveillance, utilisez ARNs plutôt que des LogGroup
noms.
Exemple de requête :
SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'
La syntaxe suivante impliquant plusieurs groupes de journaux après l'FROM
instruction n'est PAS prise en charge lors de l'interrogation CloudWatch des journaux.
SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'
Restrictions
Les restrictions suivantes s'appliquent lorsque vous utilisez OpenSearch SQL pour effectuer des requêtes dans CloudWatch Logs Insights.
-
Vous ne pouvez inclure qu'un seul JOIN dans une instruction SELECT.
-
Un seul niveau de sous-requêtes imbriquées est pris en charge.
-
Les requêtes d'instruction multiples séparées par des points-virgules (;) ne sont pas prises en charge.
-
Les requêtes contenant des noms de champs identiques mais différents uniquement au cas où (par exemple field1 et FIELD1) ne sont pas prises en charge.
Par exemple, la requête suivante n'est pas prise en charge :
Select AWSAccountId, AwsAccountId from LogGroup
Cependant, la requête suivante est prise en charge car le nom du champ (
@logStream
) est identique dans les deux groupes de journaux :Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id
-
Les fonctions et expressions doivent agir sur les noms de champs et faire partie d'une instruction SELECT avec un groupe de journaux spécifié dans la clause FROM.
Par exemple, cette requête n'est pas prise en charge :
SELECT cos(10) FROM LogGroup
Cette requête est prise en charge :
SELECT cos(field1) FROM LogGroup
-
Lorsque vous utilisez des commandes SQL ou PPL, entourez certains champs de backticks pour les interroger correctement. Les champs contenant des caractères spéciaux (non alphabétiques et non numériques) doivent être cochés. Par exemple, joignez
@message
Operation.Export
, et entreTest::Field
backticks. Il n'est pas nécessaire de placer les champs avec des noms purement alphabétiques en backticks.Exemple de requête avec des champs simples :
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;
Requête similaire avec backticks ajoutés :
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;