疑難排解
本頁整理常見問題的處理方式。
Druid schema 沒有更新
若修改 Rule output structure 後,Druid 沒有 ingest 資料或仍停留在舊 schema,可以 reset Kafka supervisor,再重新提交 ingestion spec。
curl -X POST http://localhost:8888/druid/indexer/v1/supervisor/osprey.execution_results/terminate
docker compose restart druid-spec-submitter
若要刪除全部 Druid 與 MinIO state 並重新開始,同時保留 Postgres 資料,可使用下列 commands。
docker compose down
docker volume rm osprey_middle_var osprey_historical_var osprey_broker_var osprey_coordinator_var osprey_router_var osprey_druid_shared osprey_minio_data
docker compose up -d
若要連同 Postgres 在內刪除所有資料,可使用下列 command。
docker compose down -v && docker compose up -d
Warning
docker volume rm與docker compose down -v會刪除 volumes 及其中資料,難以復原。執行前應確認目前目錄、Compose project 與確切 volume names,並確認不需要保留其中資料或已完成可用備份。正式環境不可直接照用本頁的本機重建步驟。
測試資料沒有出現在介面中
介面預設查詢最近 24 小時。若選擇的時間範圍過大,例如數週或數月,Druid 需要掃描許多 segments,結果可能很慢或看起來是空白。
- 將時間範圍縮小至產生測試資料前後的 1 至 4 小時
- 點選顯示時間範圍旁的編輯圖示,切換至自訂日期與時間選擇器
- Druid 的 Kafka consumer 使用
auto.offset.reset: latest,只會取得第一次執行docker compose up後產生的 Events。更早的 Events 不會出現,與選擇的時間範圍無關
Kafka topic disk 使用量增加
Topics 建立時會設定 48 小時與每個 partition 8 GB 的 retention limit。若部署時間早於這項設定,可以將設定套用到既有 Topics。
for topic in osprey.actions_input osprey.execution_results; do
kafka-configs --bootstrap-server localhost:9092 \
--entity-type topics --entity-name $topic --alter \
--add-config retention.ms=172800000,retention.bytes=8589934592,segment.bytes=1073741824
done
uv: command not found
使用 installation script 或 pip 安裝 uv。
curl -LsSf https://astral.sh/uv/install.sh | sh
# Then restart your terminal
將網路取得的 installation script 傳入 shell 前,應先檢查官方來源與 script 內容。
Pre-commit hooks 失敗
手動執行 hooks 以查看詳細 errors。
uv run pre-commit run --all-files
Protobuf files 發生 MyPy errors
處理方式 Protobuf generated files 已在設定中排除。若仍看到 errors,請檢查 files 是否符合 pyproject.toml 中的 exclusion patterns。
Type checking 時發生 import errors
確認已安裝所有 dependencies。
uv sync