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 de consulta estructurado (SQL)
Esta sección contiene una introducción básica a la consulta de CloudWatch registros mediante OpenSearch SQL. Ofrece una opción que es conocida si se 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. Se puede ejecutar JOIN entre grupos de registros, correlacionar datos entre grupos de registros mediante subconsultas y utilizar el amplio conjunto de funciones JSON, matemáticas, de cadena, condicionales y otras funciones de SQL para realizar análisis eficaces de los datos de registro y de seguridad.
Se usa filterIndex para devolver solo datos indexados, mediante el forzado de una consulta a analizar solo los grupos de registros que están indexados en un campo que se especifique en la consulta. Reduzca el volumen escaneado omitiendo los grupos de registros que no tienen ningún evento de registro que contenga el campo especificado en la consulta y analizando únicamente los grupos de registros que coincidan con el valor especificado en la consulta para este índice de campos. filterIndexUtilícelo para especificar el nombre del campo, junto con el nombre y el valor del campo para consultar únicamente los datos indizados que contengan el campo y el valor especificados.
Puede usar OpenSearch SQL para las consultas de los grupos de registros de la clase de registro estándar. SQL también admite la consulta mediante el nombre y el tipo de fuente de datos.
nota
En la siguiente tabla se enumeran los comandos y funciones de SQL admitidos en 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.
Para obtener información sobre otros lenguajes de consulta que puede usar, consulte CloudWatch Logs Insights, OpenSearch Service PPL y CloudWatch Metrics Insights.
Comandos SQL compatibles
nota
En la columna de comandos de la consulta de muestra, reemplace según sea necesario en función del origen de datos que esté consultando. <logGroup>
| Comando o función | Consulta de ejemplo | Description (Descripción) |
|---|---|---|
|
SELECT |
|
Muestra los valores proyectados. |
|
FROM |
|
Built-in cláusula que especifica las tablas o vistas de origen de las que se recuperan los datos, y admite varios tipos de combinaciones y subconsultas. |
|
WHERE |
|
Filtra los eventos del registro en función de los criterios de campo proporcionados. |
|
filterIndex |
|
Devuelve únicamente datos indizados, obligando a una consulta a analizar únicamente los grupos de registros que estén indexados en un campo que usted especifique en la consulta. |
|
GROUP BY |
|
Los grupos registran los eventos según la categoría y encuentran el promedio en función de las estadísticas. |
|
HAVING |
|
Filtra los resultados en función de las condiciones de agrupación. |
|
ORDER BY |
|
Ordena los resultados en función de los campos de la cláusula ORDER BY. Puede especificar un orden tanto ascendente como descendente. |
|
JOIN |
|
Une los resultados de dos tablas en función de los campos en común. Debe especificarse Inner JOIN o Left Outer Join |
|
LIMIT |
|
Limita los resultados de la consulta a las N primeras filas. |
|
Funciones de cadena |
|
Built-in funciones en SQL que pueden manipular y transformar datos de cadenas y texto en consultas SQL. Por ejemplo, convertir mayúsculas y minúsculas, combinar cadenas, extraer partes y limpiar el texto. |
|
Funciones de datos |
|
Built-in funciones para gestionar y transformar datos de fecha y hora en consultas SQL. Por ejemplo, date_add, date_format, datediff y current_date. |
|
Funciones condicionales |
|
Built-in funciones que realizan acciones en función de condiciones especificadas o que evalúan expresiones de forma condicional. Por ejemplo, CASE e IF. |
|
Funciones de agregación |
|
Built-in funciones que realizan cálculos en varias filas para producir un único valor resumido. Por ejemplo, SUM, COUNT, AVG, MAX y MIN. |
|
Funciones JSON |
|
Built-in funciones para analizar, extraer, modificar y consultar JSON-formatted datos 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 |
|
Built-in funciones para trabajar con columnas de tipo matriz en consultas SQL, lo que permite realizar operaciones como acceder, modificar y analizar datos de matrices (por ejemplo, size, explode, array_contains). |
|
Funciones de ventana |
|
Built-in funciones 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 |
|
Built-in funciones para convertir datos de un tipo a otro en consultas SQL, lo que permite transformar tipos de datos y convertir formatos. Por ejemplo, CAST, TO_DATE, TO_TIMESTAMP y BINARY. |
|
Funciones de predicados |
|
Built-in funciones que evalúan las condiciones y devuelven valores booleanos (true/false) en función de criterios o patrones específicos. Por ejemplo, IN, LIKE, BETWEEN, IS NULL y EXISTS. |
|
Selección de varios grupos de registros |
|
Permite la especificación de varios grupos de registros en una sentencia SELECT |
|
Seleccione varias fuentes de datos |
|
Le permite especificar varias fuentes de datos en una instrucción SELECT |
SQL compatible para consultas de varios grupos de registros
Para respaldar el caso de uso de la consulta de varios grupos de registros en SQL, puede usar el comando logGroups. Con esta sintaxis, puede consultar varios grupos de registros al especificarlos en el comando FROM.
Sintaxis:
`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )
En esta sintaxis, puede especificar hasta 50 grupos de registros en el parámetro logGroupIdentifier. Para hacer referencia a los grupos de registros de una cuenta de supervisión, utilice ARN en lugar de nombres LogGroup.
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'
SQL compatible para las consultas de fuentes de datos
Para respaldar el caso práctico de consulta de fuentes de datos en SQL, puede usar el comando DataSource. Con esta sintaxis, puede consultar las fuentes de datos especificándolas en el comando. FROM Puede especificar hasta 10 fuentes de datos.
Sintaxis
`dataSource( ['DataSource1', 'DataSource2', ...'DataSourcen'] )`
Consulta de ejemplo
SELECT DS1.Column1, DS1.Column2 from `dataSource( ['DataSource1', 'DataSource2'] )` as DS1 WHERE DS1.Column1 = 'ABC'
Alcance de la consulta
En la API AWS CLI and, puede especificar qué registros consultar mediante el grupo de registros, la fuente y el tipo de datos y los índices de campo.
Grupo de registros
La selección de fuentes de grupos de registros se puede utilizar cuando los clientes saben en qué grupos de registros exactos deben buscarse
SELECT * FROM `logGroups(logGroupIdentifier: ['/aws/lambda/my-function'])`;
Fuente y tipo de datos
Los clientes pueden consultar sus registros utilizando el nombre y el tipo de fuente de datos.
La selección de fuentes de datos basada en el tipo y la fuente se puede utilizar cuando los clientes saben qué fuentes de datos exactas deben consultarse. Esta consulta se ejecuta en uno o más grupos de registros que contienen la fuente y el tipo de datos especificados.
Para respaldar el caso práctico de consulta de fuentes de datos en SQL, puede usar el comando DataSource. Con esta sintaxis, puede consultar las fuentes de datos especificándolas en el comando FROM. Puede especificar hasta 10 fuentes de datos.
Sintaxis:
`dataSource( ['DataSource1.Type1', 'DataSource2.Type2', ...'DataSourcen.Typen'] )`
Consulta de ejemplo:
SELECT DS1.Column1, DS1.Column2 from `dataSource( ['DataSource1.Type1', 'DataSource2.Type2'] )` as DS1 WHERE DS1.Column1 = 'ABC'
Para obtener más información sobre las consultas por fuentes de datos, consulteUsa las facetas para agrupar y explorar los registros.
Ejemplo combinado
Los clientes pueden especificar todos los operadores de selección de fuentes dentro de las comillas inversas en cualquier orden y los resultados se basarán en la intersección de todas las condiciones aplicadas.
Por ejemplo,/aws/lambda/my-function-1 puede contener varias fuentes y tipos de datos, incluida una amplia variedad de índices. Cuando se ejecute la siguiente consulta, los resultados devueltos solo incluirán eventos de origen DataSource1.Type1 y tipo que coincidan con los criterios de «estado» = 200.
SELECT * FROM ` logGroups(logGroupIdentifier: ['/aws/lambda/my-function']) filterIndex('status' = 200) dataSource(['DataSource1.Type1']) `;
Índices de campos
La selección Index-based de la fuente de campo identifica automáticamente los grupos de registro relevantes cuando los filtros se centran en los campos indexados, lo que reduce el volumen de escaneo y el tiempo de ejecución de las consultas.
Se usa filterIndex para devolver solo datos indexados, mediante el forzado de una consulta a analizar solo los grupos de registros que están indexados en un campo que se especifique en la consulta. Para los grupos de registros que están indexados en este campo, se optimiza aún más la consulta al omitir los grupos de registros que no tienen ningún evento de registro que contenga el campo especificado en la consulta del campo indexado. Se reduce aún más el volumen analizado al intentar analizar solo los eventos de registro de estos grupos de registros que coincidan con el valor especificado en la consulta para este índice de campos. Para obtener más información sobre los índices de campo y cómo crearlos, consulte Crear índices de campos para mejorar el rendimiento de las consultas y reducir el volumen de escaneo.
En SQL, FilterIndex se usa para especificar qué pares clave-valor deben tratarse como índices. La sintaxis es la siguiente
SELECT * FROM `filterIndex('region' = 'us-east-1')`;
donde,
-
FilterIndex (...) especifica y trata los valores clave que contienen como índices de campo. Cada par clave-valor está separado por una coma (ejemplo siguiente)
-
'region' = 'us-east-1' especifica la condición real que se va a aplicar
-
Nota: En lugar de =, los clientes pueden usar IN para especificar varios valores (ejemplo a continuación)
-
El uso de varios FilterIndex combinaría las condiciones con «AND». En el ejemplo, se consultarían los registros que coincidan con status=200 y con la región en us-east-1 o us-west-2.
SELECT * FROM `filterIndex('status' = 200, 'region' IN ['us-east-1', 'us-west-2'])`;
Restricciones
Cuando usas SQL para realizar consultas en Logs Insights, se aplican las siguientes restricciones. OpenSearch CloudWatch
-
Solo se puede usar una JOIN en una sentencia SELECT.
-
No puede usar JOIN ni subconsultas con consultas de fuentes de datos.
-
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 LogGroupSin 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 sentencia SELECT con un grupo de registros especificado en la cláusula FROM.
Por ejemplo, no se admite esta consulta:
SELECT cos(10) FROM LogGroupSe admite esta consulta:
SELECT cos(field1) FROM LogGroup -
Cuando utilice comandos SQL o PPL, encierre determinados campos entre comillas invertidas para consultarlos correctamente. Las comillas simples son necesarias para los campos con caracteres especiales (no alfabéticos ni numéricos). Por ejemplo, incluya
@message,Operation.ExportyTest::Fieldentre acentos graves. No es necesario incluir los campos con nombres exclusivamente alfabéticos entre comillas simples.Ejemplo de consulta con campos sencillos:
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;Consulta similar con comillas invertidas agregadas:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;