OpenSearch Structured Query Language (SQL)
Esta seção contém uma introdução básica à consulta do CloudWatch Logs usando a OpenSearch SQL. Ela fornece uma opção mais conhecida se você estiver acostumado a trabalhar com bancos de dados relacionais. A OpenSearch SQL oferece um subconjunto da funcionalidade SQL, tornando-a uma boa opção para realizar consultas ad hoc e tarefas de análise de dados. Com a OpenSearch SQL, você pode usar comandos como SELECT, FROM, WHERE, GROUP BY, HAVING e vários outros comandos e funções SQL. Você pode executar JOINs em grupos de logs, correlacionar dados entre grupos de logs usando sub-consultas e usar o amplo conjunto de funções JSON, de matemáticas, de strings, condicionais e outras funções SQL para realizar análises poderosas em dados de log e de segurança.
Você pode usar a OpenSearch SQL somente para consultas de grupos de logs na Classe de Log Padrão.
nota
A tabela a seguir lista os comandos e funções SQL compatíveis com o CloudWatch Logs. Para obter informações sobre todos os comandos da OpenSearch SQL, incluindo a sintaxe, consulte Comandos SQL compatíveis no Guia do desenvolvedor do OpenSearch Service.
Para obter informações sobre outras linguagens de consulta que você pode usar, consulte CloudWatch Logs Insights, OpenSearch Service PPL e CloudWatch Metrics Insights.
Comandos SQL compatíveis
nota
Na coluna de consulta de exemplo, substitua conforme necessário, dependendo da fonte de dados que você está consultando. <logGroup>
| Comando ou função | Consulta de exemplo | Descrição |
|---|---|---|
|
SELECT |
|
Exibe os valores projetados. |
|
FROM |
|
Cláusula integrada que especifica a(s) tabela(s) ou visualização(ões) de origem a partir da(s) qual(is) recuperar dados, oferecendo suporte a vários tipos de junções e sub-consultas. |
|
WHERE |
|
Filtra eventos de logs com base nos critérios de campo fornecidos. |
|
GROUP BY |
|
Agrupa eventos de logs com base na categoria e encontra a média com base nas estatísticas. |
|
HAVING |
|
Filtra os resultados com base nas condições de agrupamento. |
|
ORDER BY |
|
Ordena os resultados com base nos campos da cláusula ORDER BY. É possível classificar em ordem crescente ou decrescente. |
|
JOIN |
|
Une os resultados de duas tabelas com base em campos comuns. Deve-se especificar Inner JOIN ou Left Outer Join |
|
LIMIT |
|
Limita os resultados da consulta exibidos às primeiras N linhas. |
|
Funções de string |
|
Funções integradas na SQL que podem manipular e transformar dados de string e texto em consultas SQL. Por exemplo, converter maiúsculas e minúsculas, combinar strings, extrair partes e apagar texto. |
|
Funções de data |
|
Funções integradas para manipular e transformar dados de data e carimbo de data/hora em consultas SQL. Por exemplo: date_add, date_format, datediff e current_date. |
|
Funções condicionais |
|
Funções integradas que executam ações com base em condições especificadas ou que avaliam expressões condicionalmente. Por exemplo: CASE e IF. |
|
Funções agregadas |
|
Funções integradas que realizam cálculos em várias linhas para produzir um único valor resumido. Por exemplo: SUM, COUNT, AVG, MAX e MIN. |
|
Funções JSON |
|
Funções integradas para analisar, extrair, modificar e consultar dados formatados em JSON em consultas SQL (por exemplo, from_json, to_json, get_json_object, json_tuple), permitindo a manipulação de estruturas JSON em conjuntos de dados. |
|
Funções de array |
|
Funções integradas para trabalhar com colunas do tipo array em consultas SQL, permitindo operações como acessar, modificar e analisar dados de matriz (por exemplo, size, explode, array_contains). |
|
Funções de janela |
|
Funções integradas que executam cálculos em um conjunto específico de linhas relacionadas à linha (janela) atual, permitindo operações como classificação, totais acumulados e médias móveis. Por exemplo: ROW_NUMBER, RANK, LAG e LEAD |
|
Funções de conversão |
|
Funções integradas para converter dados de um tipo para outro em consultas SQL, permitindo transformações de tipos de dados e conversões de formato. Por exemplo: CAST, TO_DATE, TO_TIMESTAMP e BINARY. |
|
Funções de predicado |
|
Funções integradas que avaliam condições e retornam valores booleanos (verdadeiro/falso) com base em critérios ou padrões especificados. Por exemplo: IN, LIKE, BETWEEN, IS NULL e EXISTS. |
|
Selecione vários grupos de logs |
|
Permite que você especifique vários grupos de logs em uma instrução SELECT |
SQL compatível para consultas de vários grupos de logs
Para oferecer suporte ao caso de uso para consultar vários grupos de logs no SQL, você pode usar o comando logGroups. Usando essa sintaxe, é possível consultar vários grupos de logs especificando-os no comando FROM.
Sintaxe:
`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )
Nessa sintaxe, é possível especificar até 50 grupos de logs no parâmetro logGroupIdentifier. Para referenciar grupos de logs em uma conta de monitoramento, use ARNs em vez de nomes LogGroup.
Consulta de exemplo:
SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'
A sintaxe a seguir envolvendo vários grupos de logs após a declaração FROM NÃO é suportada ao consultar o CloudWatch Logs.
SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'
Restrições
As restrições a seguir se aplicam quando você usa a OpenSearch SQL para fazer consultas no CloudWatch Logs Insights.
-
É possível incluir somente um JOIN em uma instrução SELECT.
-
Somente um nível de sub-consultas aninhadas é suportado.
-
Não há suporte para várias consultas de instruções separadas por ponto e vírgula (;).
-
Não há suporte para consultas contendo nomes de campo idênticos, mas que diferem somente em maiúsculas e minúsculas (como campo1 e CAMPO1).
Por exemplo, a consulta a seguir não é suportada:
Select AWSAccountId, AwsAccountId from LogGroupNo entanto, a consulta a seguir é compatível porque o nome do campo (
@logStream) é idêntico nos dois grupos de logs:Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id -
Funções e expressões devem operar em nomes de campo e fazer parte de uma instrução SELECT com um grupo de logs especificado na cláusula FROM.
Por exemplo, esta consulta não é suportada:
SELECT cos(10) FROM LogGroupEsta consulta é suportada:
SELECT cos(field1) FROM LogGroup -
Ao usar comandos SQL ou PPL, coloque certos campos entre crases para consultá-los com êxito. As crases são necessárias para campos com caracteres especiais (não alfabéticos e não numéricos). Por exemplo, coloque
@message,Operation.ExporteTest::Fieldentre crases. Você não precisa colocar entre crases os campos com nomes puramente alfabéticos.Exemplo de consulta com campos simples:
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;Consulta semelhante com crases adicionadas:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;