コンテンツにスキップ

Quickwit - クラウド ネイティブ ログ検索エンジン チートシート

Quickwit - クラウド ネイティブ ログ検索エンジン チートシート

Quickwit はオープンソース、Rust ベースの検索エンジン、追加専用データ用に設計 — ログ、トレース、監査イベント — オブジェクト ストレージ (S3、GCS、Azure) で直接実行。Elasticsearch とは異なり、インデックス用のローカル ディスクまたはクラスター状態マシンは不要で、インデックスはそれらを S3 に不変スプリットとして存在するため、コンピュートをストレージから分離し、ペタバイト規模の保持を経済的にする。Elasticsearch 互換検索 API を公開し、トレース用のネイティブ Jaeger バックエンド。

インストール

方法コマンド
インストール スクリプト`curl -L https://install.quickwit.io
Dockerdocker run -p 7280:7280 quickwit/quickwit run
KubernetesHelm チャート利用可能
ノードを開始./quickwit run
UI / APIhttp://localhost:7280

コア コンセプト

用語意味
インデックスドキュメント マッピング を持つ名前付きデータセット
スプリットオブジェクト ストレージに保存された不変インデックス シャード
メタストアインデックス/スプリット を追跡 (ファイルまたは PostgreSQL)
ソースドキュメントの出処 (Kafka、ファイル、取り込み API)
ノード ロールインデクサー、サーチャー、メタストア、コントロール プレーン

インデックスを作成

# 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

データを取り込み

方法コマンド
ファイルquickwit index ingest --index app-logs --input-path logs.json
標準入力`cat logs.json
取り込み APIPOST /api/v1/app-logs/ingest
Kafka ソースインデックス コンフィギュレーション でソースを定義
OTLPログ/トレース用のネイティブ OpenTelemetry エンドポイント
curl -XPOST "http://localhost:7280/api/v1/app-logs/ingest" \
  --data-binary @logs.ndjson

検索

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

# REST 検索
curl "http://localhost:7280/api/v1/app-logs/search?query=level:ERROR&max_hits=20"
クエリ シンタックスマッチ
termデフォルト フィールド でのフルテキスト用語
field:value正確なフィールド マッチ
a AND ba OR bNOT aブール ロジック
field:[10 TO 100]範囲
"exact phrase"フレーズ マッチ
field:prefix*プリフィックス マッチ

集約と時間フィルター

# 時間境界検索 (高速タイムスタンプ フィールドを使用)
curl "http://localhost:7280/api/v1/app-logs/search?query=*&start_timestamp=1753400000&end_timestamp=1753486400"

Quickwit は Elasticsearch スタイル集約をサポートするため、既存のダッシュボードとクエリは大きな変更なしでしばしば移植される。

インデックスを管理

コマンド説明
quickwit index listインデックスをリスト表示
quickwit index describe --index X統計/スプリット を表示
quickwit index clear --index Xすべてのドキュメント を削除
quickwit index delete --index Xインデックスを削除
quickwit split list --index Xスプリット を検査

保持

retention:
  period: 90 days
  schedule: daily

スプリット はオブジェクト ストレージに存在するため、保持は単に古いスプリット を削除すること — 安く、高速。

統合

ターゲット注記
JaegerQuickwit はネイティブ Jaeger ストレージ バックエンド
Grafanaダッシュボード用データ ソース プラグイン
OpenTelemetryログとトレース用のネイティブ OTLP 取り込み
Elasticsearch API互換検索エンドポイント マイグレーション を容易に

Quickwit vs 代替

側面QuickwitElasticsearchLoki
ストレージオブジェクト ストレージのみローカル ディスクオブジェクト ストレージ
フルテキスト インデックスはい (真の検索)はいラベルベース、限定的
規模でのコスト非常に低い高い低い
トレースネイティブ Jaeger バックエンドAPM アドオンTempo 経由
最適用途安い検索可能なログ/トレース保持一般検索Grafana ネイティブ ログ

LokiおよびOpenObserveと比較;取り込み用にVectorと組み合わせ。

リソース