Zum Inhalt springen

Quickwit – Cloud-Native Search Engine for Logs Cheatsheet

Quickwit – Cloud-Native Search Engine for Logs Cheatsheet

Quickwit ist eine Open-Source, Rust-basierte Such-Engine für Append-Only-Daten – Logs, Traces und Audit-Events – die direkt auf Object Storage (S3, GCS, Azure) läuft. Anders als Elasticsearch braucht es keine lokale Disk oder Cluster State für Indizes, was Compute von Storage entkoppelt und Petabyte-Scale-Retention wirtschaftlich macht. Sie exponiert eine Elasticsearch-kompatible Such-API und ist ein nativer Jaeger Backend für Traces.

Installation

MethodeBefehl
Installationsskript`curl -L https://install.quickwit.io
Dockerdocker run -p 7280:7280 quickwit/quickwit run
KubernetesHelm Chart verfügbar
Starten Sie einen Node./quickwit run
UI / APIhttp://localhost:7280

Kernkonzepte

BegriffBedeutung
IndexEin benannter Datensatz mit einer Doc-Zuordnung
SplitEin unveränderlicher indexierter Shard, der im Object Storage gespeichert ist
MetastoreVerfolgt Indizes/Splits (Datei oder PostgreSQL)
SourceWoher Dokumente kommen (Kafka, Datei, Aufnahme-API)
Node RolesIndexer, Searcher, Metastore, Control Plane

Einen Index erstellen

# 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

Daten aufnehmen

MethodeBefehl
Dateiquickwit index ingest --index app-logs --input-path logs.json
Stdin`cat logs.json
Aufnahme-APIPOST /api/v1/app-logs/ingest
Kafka-QuelleDefinieren Sie eine Quelle in der Index-Config
OTLPNative OpenTelemetry Endpunkt für Logs/Traces
curl -XPOST "http://localhost:7280/api/v1/app-logs/ingest" \
  --data-binary @logs.ndjson

Suche

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

# REST-Suche
curl "http://localhost:7280/api/v1/app-logs/search?query=level:ERROR&max_hits=20"
Abfrage-SyntaxPasst
termVolltextbegriff in Standard-Feldern
field:valueGenaue Feld-Übereinstimmung
a AND b, a OR b, NOT aBoolesche Logik
field:[10 TO 100]Range
"exact phrase"Phrase Match
field:prefix*Prefix Match

Aggregationen & Zeit-Filter

# Zeit-begrenzte Suche (verwendet das schnelle Timestamp-Feld)
curl "http://localhost:7280/api/v1/app-logs/search?query=*&start_timestamp=1753400000&end_timestamp=1753486400"

Quickwit unterstützt Elasticsearch-ähnliche Aggregationen, so portieren bestehende Dashboards und Abfragen oft mit wenig Änderung über.

Indizes verwalten

BefehlBeschreibung
quickwit index listAuflistung Indizes
quickwit index describe --index XZeigen Stats/Splits
quickwit index clear --index XLöschen Sie alle Dokumente
quickwit index delete --index XLöschen Sie den Index
quickwit split list --index XInspizieren Sie Splits

Retention

retention:
  period: 90 days
  schedule: daily

Da Splits im Object Storage leben, ist Retention einfach das Löschen von alten Splits – billig und schnell.

Integrationen

ZielNotiz
JaegerQuickwit ist ein nativer Jaeger Storage Backend
GrafanaData-Source Plugin für Dashboards
OpenTelemetryNative OTLP-Aufnahme für Logs und Traces
Elasticsearch APIKompatible Such-Endpunkte erleichtern die Migration

Quickwit vs Alternativen

AspektQuickwitElasticsearchLoki
SpeicherungNur Object StorageLokale DiskObject Storage
Volltext-IndexJa (echte Suche)JaLabel-basiert, begrenzt
Kosten bei ScaleSehr niedrigHochNiedrig
TracesNativer Jaeger BackendAPM Add-onsVia Tempo
Am besten fürBillige durchsuchbare Log/Trace-RetentionAllgemeine SucheGrafana-native Logs

Vergleichen Sie mit Loki und OpenObserve; paaren Sie mit Vector für Aufnahme.

Ressourcen