As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
OpenSearch Linguagem de consulta estruturada (SQL)
Esta seção contém uma introdução básica à consulta de CloudWatch registros usando OpenSearch SQL. Ela fornece uma opção mais conhecida se você estiver acostumado a trabalhar com bancos de dados relacionais. OpenSearch O SQL oferece um subconjunto da funcionalidade SQL, o que o torna uma boa opção para realizar consultas ad-hoc e tarefas de análise de dados. Com o 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 vários grupos de registros, correlacionar dados entre grupos de registros usando subconsultas e usar o rico conjunto de funções JSON, matemáticas, de sequência de caracteres, condicionais e outras funções SQL para realizar análises poderosas em dados de log e de segurança.
Use filterIndex para retornar somente dados indexados, forçando uma consulta a verificar somente grupos de logs indexados em um campo especificado na consulta. Reduza o volume escaneado ignorando grupos de registros que não têm nenhum evento de registro contendo o campo especificado na consulta e somente grupos de registros de varredura que correspondam ao valor especificado na consulta para esse índice de campo. Use filterIndex para especificar o nome do campo, junto com o nome e o valor do campo para consultar somente dados indexados contendo o campo e o valor especificados.
Você pode usar o OpenSearch SQL para consultas de grupos de registros na Classe de Registro Padrão. O SQL também oferece suporte à consulta usando o nome e o tipo da fonte de dados.
nota
A tabela a seguir lista os comandos e funções SQL compatíveis com os CloudWatch registros. Para obter informações sobre todos os comandos OpenSearch SQL, incluindo a sintaxe, consulte Comandos SQL compatíveis no OpenSearch Service Developer Guide.
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 | Description |
|---|---|---|
|
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. |
|
filterIndex |
|
Retorna somente dados indexados, forçando uma consulta a examinar somente grupos de registros que estão indexados em um campo que você especifica na consulta. |
|
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 |
|
Selecione várias fontes de dados |
|
Permite que você especifique várias fontes de dados em uma instrução SELECT |
SQL compatível para multi-log-group consultas
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 registros em uma conta de monitoramento, use ARNs em vez de LogGroup nomes.
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 registros após a FROM declaração, NÃO é compatível com a consulta CloudWatch de registros.
SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'
SQL compatível para consultas de fontes de dados
Para oferecer suporte ao caso de uso para consultar fontes de dados em SQL, você pode usar o comando DataSource. Usando essa sintaxe, você pode consultar fontes de dados especificando-as no FROM comando. Você pode especificar até 10 fontes de dados.
Sintaxe
`dataSource( ['DataSource1', 'DataSource2', ...'DataSourcen'] )`
Exemplo de consulta
SELECT DS1.Column1, DS1.Column2 from `dataSource( ['DataSource1', 'DataSource2'] )` as DS1 WHERE DS1.Column1 = 'ABC'
Escopo da consulta
Na API AWS CLI and, você pode especificar quais registros consultar usando o grupo de registros, a fonte e o tipo de dados e os índices de campo.
Grupo de logs
A seleção da fonte do grupo de registros pode ser usada quando os clientes sabem quais grupos de registros exatos precisam ser pesquisados
SELECT * FROM `logGroups(logGroupIdentifier: ['/aws/lambda/my-function'])`;
Fonte e tipo de dados
Os clientes podem consultar seus registros usando o nome e o tipo da fonte de dados.
A seleção da fonte de dados e da fonte baseada no tipo pode ser usada quando os clientes sabem quais fontes de dados exatas precisam ser consultadas. Essa consulta é executada em um ou mais grupos de registros que contêm a fonte e o tipo de dados especificados.
Para oferecer suporte ao caso de uso para consultar fontes de dados em SQL, você pode usar o comando DataSource. Usando essa sintaxe, você pode consultar fontes de dados especificando-as no comando FROM. Você pode especificar até 10 fontes de dados.
Sintaxe:
`dataSource( ['DataSource1.Type1', 'DataSource2.Type2', ...'DataSourcen.Typen'] )`
Consulta de exemplo:
SELECT DS1.Column1, DS1.Column2 from `dataSource( ['DataSource1.Type1', 'DataSource2.Type2'] )` as DS1 WHERE DS1.Column1 = 'ABC'
Para obter mais informações sobre consultas por fontes de dados, consulteUse facetas para agrupar e explorar registros.
Exemplo de combinação
Os clientes podem especificar todos os operadores de seleção de origem dentro dos acentos em qualquer ordem e os resultados seriam baseados na interseção de todas as condições aplicadas.
Por exemplo,/aws/lambda/my-function-1 pode conter várias fontes e tipos de dados, incluindo uma grande variedade de índices. Quando a consulta a seguir for executada, os resultados retornados terão apenas eventos de origem e tipo DataSource 1.Type1 e corresponderão aos critérios de 'status' = 200.
SELECT * FROM ` logGroups(logGroupIdentifier: ['/aws/lambda/my-function']) filterIndex('status' = 200) dataSource(['DataSource1.Type1']) `;
Índices de campo
A seleção de fontes com base no índice de campos identifica automaticamente grupos de registros relevantes quando seus filtros têm como alvo campos indexados, reduzindo o volume de escaneamento e o tempo de execução da consulta.
Use filterIndex para retornar somente dados indexados, forçando uma consulta a verificar somente grupos de logs indexados em um campo especificado na consulta. Para esses grupos de logs indexados nesse campo, ele otimiza ainda mais a consulta ignorando os grupos que não têm nenhum evento de logs contendo o campo especificado na consulta do campo indexado. Isso reduz ainda mais o volume escaneado ao tentar verificar somente eventos de logs desses grupos que correspondam ao valor especificado na consulta para esse índice de campo. Para obter mais informações sobre índices de campo e como criá-los, consulte Criar índices de campo para melhorar o desempenho da consulta e reduzir o volume de digitalização.
No SQL, filterIndex é usado para especificar quais pares de valores-chave devem ser tratados como índices. A sintaxe é a seguinte
SELECT * FROM `filterIndex('region' = 'us-east-1')`;
em que,
-
filterIndex (...) especifica, trata os valores-chave dentro deles como índices de campo. Cada par de valores-chave é separado por uma vírgula (exemplo abaixo)
-
'region' = 'us-east-1' especifica a condição real a ser aplicada
-
Observação: em vez de =, os clientes podem usar IN para especificar vários valores (exemplo abaixo)
-
Usar vários FilterIndex combinaria as condições usando “AND”. No exemplo, registros que correspondam a status=200 e region em us-east-1 ou us-west-2 seriam consultados.
SELECT * FROM `filterIndex('status' = 200, 'region' IN ['us-east-1', 'us-west-2'])`;
Restrições
As restrições a seguir se aplicam quando você usa OpenSearch SQL para fazer consultas no CloudWatch Logs Insights.
-
É possível incluir somente um JOIN em uma instrução SELECT.
-
Você não pode usar JOIN ou subconsultas com consultas de fonte de dados.
-
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 (;).
-
Consultas contendo nomes de campo idênticos, mas que diferem somente em maiúsculas e minúsculas (como field1 e FIELD1) não são suportadas.
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 é compatível:
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 acentos graves acrescentados:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;