AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

配置のモニタリング

このページでは、MongoDB Controllers for Kubernetes 演算子 を使用して管理する MongoDB Search とベクトル検索の配置をモニターする方法を説明します。mongot ポッド上では、次の可視化サーフェースが利用できます。

  • Prometheus 互換の /metrics エンドポイント。

  • /health/readyを公開するヘルスチェックエンドポイント。

  • 構造化された JSON ログがポッドの stdout および stderr に書き込まれます。

  • サポートと事後分析用のFTDC(Full-Time Diagnostic Data Capture)ファイル。

spec.clusters[].loadBalancer.managed を介して演算子マネージドロードバランサーを有効にすると、Kubernetes Operator は、独自の管理メトリクスサーフェースを公開する Envoy プロキシもプロビジョニングします。

このページで参照されている各 MongoDBSearch 設定の完全なスキーマについては、「MongoDB Search とベクトル検索の設定」を参照してください。特定のランタイムの問題を診断して解決するには、「mongot 配置のトラブルシューティング」を参照してください。

mongotの可用性を示す最も直接的なシグナルは、Pod の状態と MongoDBSearch リソースのステータスです。

ポッドの状態と再起動回数を確認します。

kubectl get pods -n <namespace> --context <context> | grep search

健康なmongot podは、すべてのコンテナが準備できており、再起動回数が増加しないRunning状態を報告します。再起動回数の増加は、メモリの圧力または構成エラーを示す可能性があります。詳細については、mongot配置のトラブルシューティングを参照してください。

MongoDBSearch リソースの状態と条件を調べます。

kubectl describe mongodbsearch <MongoDBSearch.metadata.name> \
-n <namespace> --context <context>

デフォルトでは、mongot Prometheus メトリクス エンドポイントは無効になっています。有効にするには、spec.observability.prometheus ブロックを MongoDBSearch リソースに追加します。空のブロックにより、デフォルト ポート 9946 でエンドポイントが有効になります。

spec:
observability:
prometheus: {}

デフォルト以外のポートを使用するには、spec.observability.prometheus.port を設定します。

spec:
observability:
prometheus:
port: 9090

エンドポイントはポッド内部で公開され、設定されたポートでmongot コンテナのポッド IP を介してアクセスできます。Kubernetes Operator はメトリクス エンドポイントを認証しません。

クラスターで Prometheus Operator が実行されている場合は、PodMonitor (ポッドごとのスクレイピングに推奨) または ServiceMonitor (サービスによってフロントエンドになっている場合) を使用してmongotメトリクス エンドポイントをスクレイピングします。Kubernetes 演算子が mongot ポッドに適用するラベルと一致させ、spec.observability.prometheus.portで構成したポートをターゲットにします。

Prometheus の ServiceMonitor を使用して MongoDB リソースを配置する例については、「Prometheus で使用するリソースの配置」を参照してください。

mongot Prometheus サーフェースでは、次のカテゴリのメトリクスが公開されています。

  • JVM — ヒープメモリと非ヒープメモリ、ガーベージコレクションのカウントと一時停止時間、スレッドカウント、クラスローダーの状態。

  • システムmongot プロセスの CPU 使用率、システム メモリ、ディスク使用率、ネットワーク I/O。

  • インデックス単位 — インデックス サイズ、Lucene ドキュメントとフィールドのカウント、インデックス ステータス、最終更新タイムスタンプ。

  • 検索エンジン — クエリカウント、失敗したクエリカウント、クエリレイテンシヒストグラム。

メトリクスフォワーダーは、mongot メトリクスを MongoDB Ops Manager に送信し、他の配置メトリクスと一緒に表示できるようにします。Kubernetes 演算子は、フォワーダーを別の Kubernetes Deployment として配置します。この Kubernetes は、mongot メトリクスエンドポイントをスクレイピングし、メトリクスを MongoDB Ops Manager にプッシュします。

メトリクスフォワーダーには MongoDB Ops Manager 8.0.25 以降が必要ですが、Cloud Manager はサポートされていません。

フォワーダーを構成するには、MongoDBSearch リソースの spec.observability.metricsForwarder の下のフィールドを設定します。

  • mode Kubernetes Operatorがフォワーダーを配置するかどうかを制御します。次のいずれかの値に設定します。

    • auto (デフォルト)内部 MongoDB ソースの場合はフォワーダーを自動的に配置します。また、opsManager を設定した場合は外部ソースの場合も自動的に配置します。

    • enabled 常にフォワーダーを配置します。

    • disabled フォワーダーを配置しない。

  • opsManager.projectConfigMapRef MongoDB Ops Manager プロジェクト構成を保持する ConfigMap の名前を指定します。ConfigMap に次のキーを入力します。

    • baseUrl: MongoDB Ops Manager インスタンスの URL。

    • projectName: MongoDB Ops Managerプロジェクトの名前。

    • orgId: MongoDB Ops Manager組織の ID。

  • opsManager.agentCredentials Ops Manager API キーを保持する Secret の名前。Secret に次のキーを入力します。

    • publicKey: MongoDB Ops Manager APIキーの公開キー。

    • privateKey。MongoDB Ops Manager API キーの秘密キー。

  • resourceRequirements フォワーダー コンテナの CPU とメモリを設定します。

opsManagerを設定しない場合、Kubernetes 演算子はソース MongoDB リソースから Ops Manager 接続詳細を取得します。外部 MongoDB ソースの場合は、opsManagerを設定する必要があります。

spec:
observability:
metricsForwarder:
mode: enabled
opsManager:
projectConfigMapRef:
name: my-om-project-config
agentCredentials:
name: my-om-agent-api-key

Kubernetes 演算子は、 MongoDBSearch リソースの status.metricsForwarder の下にフォワーダーのステータスを報告します。

mongot 構造化された JSON ログをコンテナの stdout ストリームと stderr ストリームに書き込みます。これにより、標準の Kubernetes ログ ツールで読み取ることができます。

kubectl logs statefulset/<MongoDBSearch.metadata.name>-search-0

ログをリアルタイムでストリームするには、--followフラグを追加します。再起動後に前のコンテナインスタンスからログを表示するには、--previousフラグを追加します。

ログの冗長を変更するには、MongoDBSearch リソースで spec.logLevel を設定します。有効な値は TRACEDEBUGINFOWARNERROR です。省略すると、mongotINFO でログを出力します。

spec:
logLevel: DEBUG

mongot 自身のログをローテートしません。Kubernetes 配置では、ノード レベルでのログ ローテーションはコンテナ ランタイム(ほとんどのディストリビューションでは containerd または CRI-O)によって取り扱われます。ログを外部アグレゲータに転送する場合は、mongot プロセスではなく、そのシステムで保持を構成します。

mongot ポッド内のポート 8080 で 2 つのエンドポイントを持つ HTTP ヘルスサーバーを公開します。

エンドポイント
正常な応答
不健全な応答

/health

200 SERVING

503 NOT_SERVING

/ready

200 SERVING

503 NOT_SERVING

エンドポイントには、mongot のスタートアップ、ライブネス、インデックスのレプリケーションの初期化が反映されます。エンドポイントを無効にすることはできません。

Kubernetes Operator は、/health/readymongot コンテナのライブネス プローブとレディネス プローブに自動的に接続します。通常、これらのプローブを上書きする必要はありません。kubectl describe pod <mongot-pod> には、演算子によって適用されるプローブ構成が表示されます。

mongot Full-Time Diagnostic Data Capture (FTDC) ファイルを、ポッドのデータパスにマウントされた永続ボリュームの diagnostic.data/ サブディレクトリに書き込みます。FTDC はデフォルトで有効になっており、MongoDB サポートがパフォーマンスと安定性の問題を分類することを目的としています。

FTDC ファイルには、インデックスごとのサイズ計測、インデックスの作成とクエリのレイテンシ、リクエストカタログ統計、直列化レイテンシ、Lucene パフォーマンスカウンターなど、Prometheus の表面よりも高濃度のデータが含まれています。

サポート ケースの FTDC ファイルを収集するには、kubectl cp を使用して mongot ポッドから diagnostic.data/ ディレクトリをコピーします。

kubectl cp <mongot-pod>:/mongot/data/diagnostic.data ./mongot-ftdc

インポッドのマウントパスは、spec.clusters[].persistenceの構成に関わらず/mongot/dataに固定されています。持続性設定はマウントロケーションではなく、PVC サイズとストレージ クラスを制御します。

spec.clusters[].loadBalancer.managed を設定すると、Kubernetes 演算子は mongot ポッドの前面に位置する Envoy L7 プロキシをプロビジョニングします。Envoy コンテナは 2 つの可視化サーフェースを公開します。

  • 統計とランタイムコントロール (ログレベル、リスナードレインなど)用のポート9901管理エンドポイントとなる接続されたデバイス。演算子は管理インターフェースをパスの許可リストに制限します: /ready/stats*/drain_listeners/logging*。このエンドポイントはkubectl port-forwardを使用したアドホックなトラブルシューティングに使用します。外部に公開することは意図されていません。

  • 標準の /stats/prometheus パスの Envoy 管理ポートでのPrometheus メトリクス。このエンドポイントを mongot メトリクスとともにスクレイプして、リクエストフロー、アップストリームの状態、サーチトラフィックプレーンの接続状態についてエンドツーエンドの可視性を取得します。

演算子は、MongoDBSearchリソースのstatus.loadBalancer.phaseの下に高レベルのEnvoyステータスを報告します。

kubectl get mongodbsearch <name> -o jsonpath='{.status.loadBalancer.phase}'

フェーズは演算子マネージド Envoy Deployment ライフサイクルを反映します(例:PendingRunningFailed)。