Pular para o conteúdo

Quickwit - Mecanismo de Busca Nativo em Nuvem para Logs - Guia de Referência

Quickwit - Mecanismo de Busca Nativo em Nuvem para Logs - Guia de Referência

Quickwit é um mecanismo de busca de código aberto, baseado em Rust, projetado para dados apenas para anexar — logs, traces e eventos de auditoria — que executa diretamente em object storage (S3, GCS, Azure). Diferentemente de Elasticsearch, não precisa de disco local ou maquinaria de estado de cluster para índices, o que desacopla computação de armazenamento e torna retenção em escala petabyte econômica. Expõe uma API de busca compatível com Elasticsearch e é um backend nativo Jaeger para traces.

Instalação

MétodoComando
Script de instalação`curl -L https://install.quickwit.io
Dockerdocker run -p 7280:7280 quickwit/quickwit run
KubernetesGráfico Helm disponível
Iniciar um nó./quickwit run
UI / APIhttp://localhost:7280

Conceitos Principais

TermoSignificado
ÍndiceUm dataset nomeado com um doc mapping
SplitUm shard indexado imutável armazenado em object storage
MetastoreRastreia índices/splits (arquivo ou PostgreSQL)
OrigemDe onde documentos vêm (Kafka, arquivo, API de ingestão)
Papéis de nóindexer, searcher, metastore, control plane

Criando um Índice

# index-config.yaml
version: 0.8
index_id: app-logs
doc_mapping:
  field_mappings:
    - name: timestamp
      type: datetime
      fast: true
      input_formats: [rfc3339, unix_timestamp]
    - name: level
      type: text
      tokenizer: raw
    - name: service
      type: text
      tokenizer: raw
    - name: message
      type: text
      tokenizer: default
  timestamp_field: timestamp
indexing_settings:
  commit_timeout_secs: 30
search_settings:
  default_search_fields: [message]
quickwit index create --index-config index-config.yaml

Ingestão de Dados

MétodoComando
Arquivoquickwit index ingest --index app-logs --input-path logs.json
Stdincat logs.json | quickwit index ingest --index app-logs
API de ingestãoPOST /api/v1/app-logs/ingest
Origem KafkaDefinir uma origem na config de índice
OTLPEndpoint OpenTelemetry nativo para logs/traces
curl -XPOST "http://localhost:7280/api/v1/app-logs/ingest" \
  --data-binary @logs.ndjson

Buscando

# Busca CLI
quickwit index search --index app-logs --query "level:ERROR AND service:api"

# Busca REST
curl "http://localhost:7280/api/v1/app-logs/search?query=level:ERROR&max_hits=20"
Sintaxe de consultaCorresponde
termTermo de texto completo em campos padrão
field:valueCorrespondência exata de campo
a AND b, a OR b, NOT aLógica booleana
field:[10 TO 100]Intervalo
"exact phrase"Correspondência de frase
field:prefix*Correspondência de prefixo

Agregações & Filtros de Tempo

# Busca limitada por tempo (usa o campo timestamp rápido)
curl "http://localhost:7280/api/v1/app-logs/search?query=*&start_timestamp=1753400000&end_timestamp=1753486400"

Quickwit suporta agregações ao estilo Elasticsearch, então consultas e dashboards existentes frequentemente portam com pouca mudança.

Gerenciando Índices

ComandoDescrição
quickwit index listListar índices
quickwit index describe --index XMostrar stats/splits
quickwit index clear --index XDeletar todos os documentos
quickwit index delete --index XDeletar o índice
quickwit split list --index XInspecionar splits

Retenção

retention:
  period: 90 days
  schedule: daily

Porque splits vivem em object storage, retenção é apenas deletar splits antigos — barato e rápido.

Integrações

AlvoNota
JaegerQuickwit é um backend nativo de armazenamento Jaeger
GrafanaPlugin de fonte de dados para dashboards
OpenTelemetryIngestão nativa OTLP para logs e traces
API ElasticsearchEndpoints de busca compatíveis facilitam migração

Quickwit vs Alternativas

AspectoQuickwitElasticsearchLoki
ArmazenamentoObject storage apenasDisco localObject storage
Índice de texto completoSim (busca verdadeira)SimFiltro baseado em rótulo, limitado
Custo em escalaMuito baixoAltoBaixo
TracesBackend Jaeger nativoAdd-ons APMVia Tempo
Melhor paraRetenção de log/trace barata e pesquisávelBusca geralLogs nativos de Grafana

Compare com Loki e OpenObserve; combine com Vector para ingestão.

Recursos