Skip to main content
Analytics worker は Enterprise 専用のアドオンです。Cockpit ダッシュボード(DORA 風メトリクス、PR ライフサイクル、LLM ベースの PR classifier)を駆動する取り込み cron を実行します。
デフォルトのインストーラーはこのワーカーを含みません。コミュニティ 版のセルフホストデプロイメントには不要で、これらの変数はデフォルトの .env.example からフィルタリングされています。セルフホスト Enterprise ライセンスを持っていて、Cockpit のレポートが必要な場合のみ進めてください。

何をするか

worker同じイメージkodus-ai-worker)を実行する別プロセスで、 boot 時に WORKER_ROLE=analytics で選択されます。このプロセスからのみ 2 つの cron が起動します:
  • 取り込みANALYTICS_INGESTION_CRON、デフォルト */30 * * * *) — Mongo + OLTP Postgres から pull request とレビューセッションを読み、 analytics schema に投影します。
  • ClassifierANALYTICS_CLASSIFIER_CRON、デフォルト */15 * * * *) — LLM を呼び出して各 PR にタイプ (feature/bugfix/refactor/etc)をタグ付けします。
メインの worker から分離することで、code review の event loop が 長時間の取り込みクエリの影響を受けないようにします。

トポロジー

Analytics warehouse は別の DB ではなく Postgres の schema です。 2 つのレイアウトがサポートされています:
  • 共有 Postgres(セルフホスト推奨)ANALYTICS_PG_DB_HOST を空に します。設定ローダーが API_PG_DB_* 変数にフォールバックし、同じ インスタンスに analytics schema を作成します。バックアップと運用は 1 つの DB だけ。
  • 専用 Postgres — 別のインスタンスを指す ANALYTICS_PG_DB_* 全体を 設定します。OLTP の write path から完全に分離した分析クエリが必要な 場合に使用します。

セルフホスト Enterprise での有効化

1. docker-compose.yml にサービスを追加

イメージは worker サービスと同一です — WORKER_ROLE=analytics だけが 取り込みモードに切り替えます。

2. .env に analytics ブロックを追加

共有 Postgres(推奨):
専用 Postgres:

3. Boot — マイグレーションが自動実行されます

worker-analytics コンテナは api/worker/webhooks と同じ prod-entrypoint.sh を共有します。RUN_MIGRATIONS=true(インストーラー のデフォルト)の場合、analytics warehouse のマイグレーション (yarn analytics:migration:run:prod)が初回 boot で実行され、 analytics schema とそのテーブルが作成されます。

リファレンス

取り込みの一時停止(高度)

コンテナを削除せずに runtime で取り込みを停止するには、 ANALYTICS_INGESTION_DISABLED=true および/または ANALYTICS_CLASSIFIER_DISABLED=true を設定し、worker-analytics を 再起動してください。Cron はスケジュールされたままですが、各 tick が ショートサーキットします。これはインシデントトリアージ用で、長期設定 としては使わないでください — これらの変数は主にクラウド向けに管理されて おり、インストーラーテンプレートには表示されない場合があります。

動作の確認

Boot 後、analytics worker のログを追跡します:
30 分ごとに analytics ingestion done in NNNms — {...} のような行と、 15 分ごとに analytics classifier done ... が表示されるはずです。 表示されない場合は、WORKER_ROLE=analytics がこのコンテナにのみ 設定されていることを確認してください(メインの worker には設定しない こと — そちらは code-review のままにする必要があります)。