Zoektのトラブルシューティング
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed
- ステータス: ベータ
Zoektを使用しているときに、以下の問題が発生する可能性があります。予備的なデバッグ:
- Zoektインフラストラクチャのステータスを理解するには、ヘルスチェックを実行します。
gitlab-rake gitlab:zoekt:infoRakeタスクで、インデックス作成ステータスを確認します。
ネームスペースがインデックスされていません
設定を有効にすると、新しいネームスペースは自動的にインデックスされます。ネームスペースが自動的にインデックスされない場合は、Sidekiqログを調べて、ジョブが処理されているかどうかを確認します。Search::Zoekt::SchedulingWorkerは、ネームスペースのインデックス作成を担当します。
Railsコンソールセッションで、以下を確認できます:
Zoektが有効になっていないネームスペース:
Namespace.group_namespaces.root_namespaces_without_zoekt_enabled_namespaceZoektインデックスのステータス:
Search::Zoekt::Index.all.pluck(:state, :namespace_id)
ネームスペースを手動でインデックス作成するには、設定アップを参照してください。
エラー: SilentModeBlockedError
完全一致コードの検索を実行しようとすると、SilentModeBlockedErrorが表示されることがあります。このイシューは、サイレントモードがGitLabインスタンスで有効になっている場合に発生します。
このイシューを解決するには、サイレントモードが無効になっていることを確認してください。
エラー: connections to all backends failing
application_json.logで、次のエラーが発生する可能性があります:
connections to all backends failing; last error: UNKNOWN: ipv4:1.2.3.4:5678: Trying to connect an http1.x serverこのイシューを解決するには、プロキシを使用しているかどうかを確認してください。使用している場合は、GitLabサーバーのIPアドレスをno_proxyに設定します:
gitlab_rails['env'] = {
"http_proxy" => "http://proxy.domain.com:1234",
"https_proxy" => "http://proxy.domain.com:1234",
"no_proxy" => ".domain.com,IP_OF_GITLAB_INSTANCE,127.0.0.1,localhost"
}proxy.domain.com:1234は、プロキシインスタンスのドメインとポートです。IP_OF_GITLAB_INSTANCEは、GitLabインスタンスのパブリックIPアドレスを指します。
この情報を取得するには、ip aを実行して、次のいずれかを確認します:
- 適切なネットワークインターフェースのIPアドレス
- 使用しているロードバランサーのパブリックIPアドレス
Zoektノード接続を確認する
Zoektノードが適切に構成され、接続されていることを確認するには、Railsコンソールセッションで、以下を実行します:
構成されているZoektノードの総数を確認します:
Search::Zoekt::Node.countオンラインのノード数を確認します:
Search::Zoekt::Node.online.count
または、gitlab:zoekt:info Rakeタスクを使用することもできます。
オンラインノードの数が、構成されているノードの数より少ない場合、またはノードが構成されている場合にゼロである場合は、GitLabとZoektノードの間に接続の問題がある可能性があります。
エラー: TaskRequest responded with [401]
Zoekt Indexerログに、TaskRequest responded with [401]が表示されることがあります。このエラーは、Zoekt IndexerがGitLabでの認証に失敗していることを示しています。
このイシューを解決するには、gitlab-shell-secretが正しく構成され、GitLabインスタンスとZoekt Indexerの間で一致することを確認します。たとえば、次のコマンドの出力は、gitlab.rbのgitlab-shell-secretと一致する必要があります:
kubectl get secret gitlab-shell-secret -o jsonpath='{.data.secret}' -n your_zoekt_namespace | base64 -d