Skip to main content

Introdução | Sintaxe Query | Datalust/Seq | Devops

  • Introdução | Sintaxe Query | Datalust/Seq | Devops

📊 Guia Completo da Sintaxe de Query – Datalust/Seq

📌 Visão Geral

O Seq permite que você faça consultas estruturadas sobre logs, que são armazenados como eventos estruturados (normalmente em JSON).

A linguagem de query é inspirada em SQL/LINQ e permite:

  • 🔍 Filtrar eventos
  • 📈 Agregar valores
  • 🧮 Fazer análises temporais
  • 🧩 Projetar dados estruturados

🧱 Estrutura da Query

from stream
select [projeções]
where [filtros]
group by [agrupamentos]
order by [ordenação]

💡 from stream indica que a consulta está sendo feita sobre o fluxo de eventos registrados.

Ele é implícito no Seq, mas é parte formal da linguagem e pode ser incluído para tornar a query mais clara, especialmente fora do dashboard.


🎯 Exemplos Completos

🔹 Consulta simples com projeção

from stream
select Timestamp, Message, Level
where Level = 'Error'

⚙️ Operadores de Comparação

OperadorDescriçãoExemplo
=IgualLevel = 'Error'
!=DiferenteStatusCode != 200
>Maior queDuration > 100
<Menor queElapsed < 500
>=Maior ou igualRetries >= 3
<=Menor ou igualVersion <= 2
in (...)Em uma listaLevel in ('Warning', 'Error', 'Fatal')

📌 Exemplo com todos:

from stream
select RequestPath, StatusCode
where StatusCode >= 400 and Method in ('POST', 'PUT')

🔡 Operadores de String

OperadorCase-sensitive?DescriçãoExemplo
containsNãoContém substringMessage contains 'timeout'
!containsNãoNão contém substringRequestPath !contains '/health'
likeNãoUsa curinga %UserAgent like '%Chrome%'
not likeNãoNegação de likeMessage not like '%success%'
startsWithNãoComeça comRequestPath startsWith '/api/'
endsWithNãoTermina comFileName endsWith '.pdf'

📌 Exemplo com vários:

from stream
select Message
where Message contains 'exception'
or RequestPath startsWith '/api/'
or UserAgent like '%Safari%'

🧮 Funções de Agregação

FunçãoDescriçãoExemplo
count()Conta os eventosselect count()
sum(x)Soma os valores de xselect sum(Duration)
avg(x)Médiaselect avg(ResponseTime)
min(x)Mínimoselect min(StatusCode)
max(x)Máximoselect max(Size)
stddev(x)Desvio padrãoselect stddev(Duration)

📌 Exemplo:

from stream
select count(), avg(Duration)
where RequestPath contains '/checkout'

⏱️ Funções Temporais

FunçãoDescriçãoExemplo
time(1m)Agrupamento por janelas de tempogroup by time(1m)
startofhour()Início da hora do eventoselect startofhour(Timestamp)
startofday()Início do dia do eventoselect startofday(Timestamp)

📌 Exemplo com agregação temporal:

from stream
select count()
where Level = 'Error'
group by time(5m)

🛠️ Projeções e Expressões

Você pode usar expressões para projetar ou transformar dados diretamente:

RecursoExemplo
Expressão aritméticaDuration * 1000 as DurationMs
Renomear colunasStatusCode as Code

📌 Exemplo:

from stream
select RequestPath, Duration * 1000 as DurationMs
where RequestPath startsWith '/api/'