OpenSearch Linguagem SQL - CloudWatch Registros da Amazon

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 SQL

Esta seção contém uma introdução básica à consulta de CloudWatch registros usando OpenSearch SQL. Ele fornece uma opção familiar 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.

Você pode usar OpenSearch SQL somente para consultas de grupos de registros na Classe de Registro Padrão. Ao selecionar quais grupos de registros consultar, você pode selecionar um único grupo de registros, um conjunto de grupos de registros que compartilham um prefixo ou selecionar todos os grupos de registros

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.

Comandos SQL compatíveis

nota

Na coluna de consulta de exemplo, substitua <logGroup> conforme necessário, dependendo da fonte de dados que você está consultando.

Comando ou função Consulta de exemplo Descrição

SELECT

SELECT `@message`, Operation FROM `LogGroupA`

Exibe os valores projetados.

FROM

SELECT `@message`, Operation FROM `LogGroupA`

Cláusula incorporada que especifica a (s) tabela (s) de origem ou visualizações das quais recuperar dados, oferecendo suporte a vários tipos de junções e subconsultas.

WHERE

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

Filtra eventos de log com base nos critérios de campo fornecidos.

GROUP BY

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

Os grupos registram eventos com base na categoria e encontram a média com base nas estatísticas.

HAVING

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

Filtra os resultados com base nas condições de agrupamento.

ORDER BY

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

Ordena os resultados com base nos campos da cláusula ORDER BY. Você pode classificar em ordem decrescente ou crescente.

JOIN

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

Une os resultados de duas tabelas com base em campos comuns. A junção interna ou a junção externa esquerda devem ser especificadas

LIMIT

Select * from `LogGroupA` limit 10

Limita os resultados da consulta exibidos às primeiras N linhas.

Funções de string

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

Funções integradas no SQL que podem manipular e transformar dados de string e texto em consultas SQL. Por exemplo, converter maiúsculas e minúsculas, combinar sequências de caracteres, extrair partes e limpar texto.

Funções de data

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

Funções integradas para manipular e transformar dados de data e data e hora em consultas SQL. Por exemplo, date_add, date_format, datediff e current_date.

Funções condicionais

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

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

SELECT AVG(bytes) as bytesWritten FROM `LogGroupA`

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

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

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

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

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

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

Funções integradas que realizam 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

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

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

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

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.

Selecionar vários grupos de registros

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

Permite que você especifique vários grupos de registros 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 registros no SQL, você pode usar o logGroups comando. Usando essa sintaxe, você pode consultar vários grupos de registros especificando-os no comando FROM.

Sintaxe:

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

Nessa sintaxe, você pode especificar até 50 grupos de registros no logGroupIdentifier parâmetro. 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'

Restrições

As restrições a seguir se aplicam quando você usa OpenSearch SQL para fazer consultas no CloudWatch Logs Insights.

  • Você pode incluir somente um JOIN em uma instrução SELECT.

  • Somente um nível de subconsultas 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 é compatível:

    Select AWSAccountId, AwsAccountId from LogGroup

    No entanto, a consulta a seguir é compatível porque o nome do campo (@logStream) é idêntico nos dois grupos de registros:

    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 registros especificado na cláusula FROM.

    Por exemplo, essa consulta não é suportada:

    SELECT cos(10) FROM LogGroup

    Essa consulta é suportada:

    SELECT cos(field1) FROM LogGroup
  • Ao usar comandos SQL ou PPL, coloque certos campos em acentos cravos para consultá-los com êxito. Os cravos são necessários para campos com caracteres especiais (não alfabéticos e não numéricos). Por exemplo, coloque @messageOperation.Export, e entre Test::Field cravos. Você não precisa colocar campos com nomes puramente alfabéticos entre acentos.

    Exemplo de consulta com campos simples:

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

    Consulta semelhante com acentos crônicos anexados:

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