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 streamindica 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
| Operador | Descrição | Exemplo |
|---|---|---|
= | Igual | Level = 'Error' |
!= | Diferente | StatusCode != 200 |
> | Maior que | Duration > 100 |
< | Menor que | Elapsed < 500 |
>= | Maior ou igual | Retries >= 3 |
<= | Menor ou igual | Version <= 2 |
in (...) | Em uma lista | Level in ('Warning', 'Error', 'Fatal') |
📌 Exemplo com todos:
from stream
select RequestPath, StatusCode
where StatusCode >= 400 and Method in ('POST', 'PUT')
🔡 Operadores de String
| Operador | Case-sensitive? | Descrição | Exemplo |
|---|---|---|---|
contains | Não | Contém substring | Message contains 'timeout' |
!contains | Não | Não contém substring | RequestPath !contains '/health' |
like | Não | Usa curinga % | UserAgent like '%Chrome%' |
not like | Não | Negação de like | Message not like '%success%' |
startsWith | Não | Começa com | RequestPath startsWith '/api/' |
endsWith | Não | Termina com | FileName 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ção | Descrição | Exemplo |
|---|---|---|
count() | Conta os eventos | select count() |
sum(x) | Soma os valores de x | select sum(Duration) |
avg(x) | Média | select avg(ResponseTime) |
min(x) | Mínimo | select min(StatusCode) |
max(x) | Máximo | select max(Size) |
stddev(x) | Desvio padrão | select stddev(Duration) |
📌 Exemplo:
from stream
select count(), avg(Duration)
where RequestPath contains '/checkout'
⏱️ Funções Temporais
| Função | Descrição | Exemplo |
|---|---|---|
time(1m) | Agrupamento por janelas de tempo | group by time(1m) |
startofhour() | Início da hora do evento | select startofhour(Timestamp) |
startofday() | Início do dia do evento | select 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:
| Recurso | Exemplo |
|---|---|
| Expressão aritmética | Duration * 1000 as DurationMs |
| Renomear colunas | StatusCode as Code |
📌 Exemplo:
from stream
select RequestPath, Duration * 1000 as DurationMs
where RequestPath startsWith '/api/'