O Simple Log Service oferece o recurso de análise baseada em varredura, que examina logs com base em campos especificados para retornar resultados de análise. Esse recurso permite analisar logs sem a necessidade de configurar índices. Este tópico descreve a sintaxe básica da análise baseada em varredura.
Como funciona
Quando o Simple Log Service recebe uma solicitação de análise baseada em varredura, ele executa as seguintes etapas:
Executa a instrução de pesquisa para consultar logs.
nullA instrução de pesquisa requer índices. Por exemplo, antes de executar a instrução
status:200 | set session mode=scan;SELECT api, count(*) AS PV GROUP BY api, você deve criar um índice para o campo status. Não é necessário criar um índice para o campo api.Examina os resultados da consulta da instrução de pesquisa com base nos campos especificados na instrução analítica e extrai dados desses campos.
Executa a instrução analítica para agregar e analisar os dados extraídos e retorna os resultados da análise.
Sintaxe básica
Para usar o recurso de análise baseada em varredura, adicione set session mode=scan; antes da instrução analítica baseada na sintaxe SQL padrão.
Search statement | set session mode=scan;Analytic statement based on the standard SQL syntaxExemplo
* and status:200 | set session mode=scan;SELECT api, count(*) AS PV GROUP BY apiLimites
No modo de análise baseada em varredura, todos os campos são considerados do tipo varchar.
Para analisar campos de outros tipos de dados, use a função cast para converter os tipos. Para obter mais informações, consulte Função cast.
Por exemplo, para calcular a latência média das operações de API, use a função cast para converter o tipo do campo latency para o tipo bigint, pois a função avg requer entrada numérica.
status:200 | set session mode=scan;SELECT avg(cast(latency AS bigint)) AS 'Average latency', api GROUP BY apiNo modo de análise baseada em varredura, o Simple Log Service examina logs para extrair dados dos campos especificados na instrução analítica. Os índices de campo existentes não entram em vigor.
Por exemplo, se você criou um índice do tipo long para o campo status e executar a instrução a seguir para realizar análise baseada em varredura, o índice do campo status não entrará em vigor.
* | set session mode=scan;SELECT count(1) AS pv, api WHERE cast(status AS bigint) = 200 GROUP BY apiNesse cenário, recomenda-se usar a instrução a seguir.
nullSe você criou um índice para um campo, recomenda-se posicioná-lo antes da barra vertical (|) como condição de filtro.
status:200 | set session mode=scan;SELECT count(1) as pv, api GROUP BY apiNo modo de análise baseada em varredura, a quantidade de dados que pode ser analisada é limitada. Em um shard, até 500.000 logs podem ser analisados e até 10 milhões de logs podem ser varridos. Se uma instrução de pesquisa for usada, o limite de varredura se refere ao número de logs retornados pela instrução de pesquisa. Se um dos limites anteriores for excedido, o sistema retorna os resultados da análise de apenas parte dos logs e indica que os resultados são imprecisos.
Use os seguintes métodos para evitar resultados imprecisos:
Recomenda-se usar a análise baseada em índice para dados estruturados em grande escala. Crie índices de campo e ative o recurso de análise de logs.
Recomenda-se usar instruções de pesquisa para filtrar logs e reduzir a quantidade de dados a serem varridos. Certifique-se de ter criado índices para os campos especificados nas instruções de pesquisa.
Recomenda-se reduzir o intervalo de tempo da consulta para diminuir a quantidade de dados a serem varridos.
No modo de análise baseada em varredura, a instrução
*|select *não é compatível.Para analisar dados em vários Logstores usando uma cláusula JOIN no modo de análise baseada em varredura, adicione os nomes dos Logstores antes dos campos. Formato:
LogstoreName.key.
Comparação entre análise baseada em índice e análise baseada em varredura
Item | Análise baseada em índice | Análise baseada em varredura |
Sintaxe |
|
|
Necessidade de configuração de índices | É necessário configurar índices para os campos e ativar o recurso de análise de logs para esses campos. | Não é necessário configurar índices nem ativar o recurso. null A instrução de pesquisa antes da barra vertical (|) requer índices. |
Sintaxe SQL | Uma ampla variedade de sintaxe SQL e funções SQL é compatível. Para obter mais informações, consulte Visão geral das funções. | A sintaxe SQL e as funções SQL compatíveis com a análise baseada em índice também são compatíveis. Existem limites de uso em alguns cenários. Para obter mais informações, consulte Limites. |
Análise | Centenas de milhões de linhas de logs podem ser analisadas. Para obter mais informações, consulte Visão geral de consulta e análise de logs. Ative o recurso Dedicated SQL para executar análises aprimoradas. | Milhões de linhas de logs podem ser analisadas. Para analisar uma grande quantidade de dados, recomenda-se usar uma instrução de pesquisa para filtrar os logs primeiro. A instrução de pesquisa requer índices. |
Tarifas | Você é cobrado pelo tráfego de índice e pelo armazenamento de índice. Para obter mais informações, consulte Itens faturáveis por recurso. | Você é cobrado pelas varreduras com base no tráfego de varredura, equivalente à quantidade de dados retornados após a varredura. O sistema identifica logs com base nos resultados da consulta baseada em índice. |