OpenSearch Lenguaje SQL - Amazon CloudWatch Logs

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

OpenSearch Lenguaje SQL

Esta sección contiene una introducción básica a la consulta de CloudWatch registros mediante OpenSearch SQL. Proporciona una opción familiar si está acostumbrado a trabajar con bases de datos relacionales. OpenSearch SQL ofrece un subconjunto de funciones de SQL, lo que lo convierte en una buena opción para realizar consultas ad hoc y tareas de análisis de datos. Con OpenSearch SQL, puede usar comandos como SELECT, FROM, WHERE, GROUP BY, HAVING y varios otros comandos y funciones de SQL. Puede ejecutar JOINs en grupos de registros, correlacionar datos entre grupos de registros mediante subconsultas y utilizar el amplio conjunto de funciones JSON, matemáticas, de cadenas, condicionales y otras funciones de SQL para realizar análisis eficaces de los datos de registro y de seguridad.

Puede usar OpenSearch SQL solo para consultas de grupos de registros de la clase de registro estándar. Al seleccionar los grupos de registros que desea consultar, puede seleccionar un único grupo de registros, un conjunto de grupos de registros que comparten un prefijo o seleccionar todos los grupos de registros

nota

En la siguiente tabla se enumeran los comandos y funciones de SQL compatibles con CloudWatch los registros. Para obtener información sobre todos los comandos de OpenSearch SQL, incluida la sintaxis, consulte los comandos de SQL compatibles en la Guía para desarrolladores de OpenSearch servicios.

Comandos SQL compatibles

nota

En la columna de consulta de ejemplo, <logGroup> sustitúyala según sea necesario en función de la fuente de datos que esté consultando.

Comando o función Consulta de ejemplo Descripción

SELECT

SELECT `@message`, Operation FROM `LogGroupA`

Muestra los valores proyectados.

FROM

SELECT `@message`, Operation FROM `LogGroupA`

Cláusula integrada que especifica las tablas o vistas de origen desde las que se van a recuperar los datos y admite varios tipos de uniones y subconsultas.

WHERE

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

Filtra los eventos del registro en función de los criterios de campo proporcionados.

GROUP BY

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

Los grupos registran los eventos según la categoría y encuentran el promedio en función de las estadísticas.

HAVING

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

Filtra los resultados en función de las condiciones de agrupación.

ORDER BY

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

Ordena los resultados en función de los campos de la cláusula ORDER BY. Puede ordenar en orden descendente o ascendente.

JOIN

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

Une los resultados de dos tablas en función de campos comunes. Debe especificarse la combinación interior o la combinación exterior izquierda

LIMIT

Select * from `LogGroupA` limit 10

Limita los resultados de la consulta mostrados a las N primeras filas.

Funciones de cadena

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

Funciones integradas en SQL que pueden manipular y transformar datos de texto y cadenas de texto en consultas SQL. Por ejemplo, convertir mayúsculas y minúsculas, combinar cadenas, extraer partes y limpiar texto.

Funciones de datos

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

Funciones integradas para gestionar y transformar los datos de fecha y hora en las consultas SQL. Por ejemplo, date_add, date_format, datediff y current_date.

Funciones condicionales

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

Funciones integradas que realizan acciones en función de condiciones específicas o que evalúan las expresiones de forma condicional. Por ejemplo, CASE e IF.

Funciones agregadas

SELECT AVG(bytes) as bytesWritten FROM `LogGroupA`

Funciones integradas que realizan cálculos en varias filas para generar un único valor resumido. Por ejemplo, SUM, COUNT, AVG, MAX y MIN.

Funciones JSON

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

Funciones integradas para analizar, extraer, modificar y consultar datos con formato JSON en consultas SQL (por ejemplo, from_json, to_json, get_json_object, json_tuple) que permiten manipular las estructuras JSON en los conjuntos de datos.

Funciones de matriz

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

Funciones integradas para trabajar con columnas de tipo matriz en consultas SQL, lo que permite realizar operaciones como acceder, modificar y analizar los datos de la matriz (p. ej., size, explode, array_contains).

Funciones de ventana

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

Funciones integradas que realizan cálculos en un conjunto específico de filas relacionadas con la fila actual (ventana), lo que permite realizar operaciones como la clasificación, los totales acumulados y las medias móviles. Por ejemplo, ROW_NUMBER, RANK, LAG y LEAD

Funciones de conversión

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

Funciones integradas para convertir datos de un tipo a otro en las consultas SQL, lo que permite la transformación de los tipos de datos y las conversiones de formato. Por ejemplo, CAST, TO_DATE, TO_TIMESTAMP y BINARY.

Funciones de predicados

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

Funciones integradas que evalúan las condiciones y devuelven valores booleanos (verdadero/falso) en función de criterios o patrones específicos. Por ejemplo, IN, LIKE, BETWEEN, IS NULL y EXISTS.

Seleccione varios grupos de registros

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

Le permite especificar varios grupos de registros en una sentencia SELECT

SQL compatible para multi-log-group las consultas

Para respaldar el caso de uso de la consulta de varios grupos de registros en SQL, puede usar el logGroups comando. Con esta sintaxis, puede consultar varios grupos de registros especificándolos en el comando FROM.

Sintaxis:

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

Con esta sintaxis, puede especificar hasta 50 grupos de registros en el logGroupIdentifier parámetro. Para hacer referencia a los grupos de registros de una cuenta de supervisión, ARNs utilícelos en lugar de LogGroup nombres.

Consulta de ejemplo:

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

La siguiente sintaxis, que incluye varios grupos de registros después de la FROM sentencia, NO se admite al consultar CloudWatch los registros.

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

Restricciones

Las siguientes restricciones se aplican cuando se utiliza OpenSearch SQL para realizar consultas en CloudWatch Logs Insights.

  • Solo puede incluir un JOIN en una instrucción SELECT.

  • Solo se admite un nivel de subconsultas anidadas.

  • No se admiten consultas de varias sentencias separadas por punto y coma (;).

  • No se admiten consultas que contengan nombres de campo idénticos pero que solo difieran en mayúsculas y minúsculas (como field1 y FIELD1).

    Por ejemplo, no se admite la siguiente consulta:

    Select AWSAccountId, AwsAccountId from LogGroup

    Sin embargo, se admite la siguiente consulta porque el nombre del campo (@logStream) es idéntico en ambos grupos de registros:

    Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id
  • Las funciones y expresiones deben funcionar con los nombres de los campos y formar parte de una instrucción SELECT con un grupo de registros especificado en la cláusula FROM.

    Por ejemplo, no se admite esta consulta:

    SELECT cos(10) FROM LogGroup

    Se admite esta consulta:

    SELECT cos(field1) FROM LogGroup
  • Cuando utilice comandos SQL o PPL, encierre determinados campos entre comillas inversas para consultarlos correctamente. Las comillas inversas son necesarias para los campos con caracteres especiales (no alfabéticos ni numéricos). Por ejemplo, incluya y entre comillas invertidas@message. Operation.Export Test::Field No es necesario incluir los campos con nombres exclusivamente alfabéticos entre comillas inversas.

    Ejemplo de consulta con campos sencillos:

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

    Consulta similar con comillas invertidas añadidas:

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