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

モニタリング ツールの統合

このページでは、mongot メトリクスとログを一般的なモニタリング プラットフォームに統合する方法について説明します。これらの手順では、これらのツールのいずれかを実行するしており、mongot 固有の構成が必要であることを前提としています。このページでは、Prometheus、Grafana、またはその他のプラットフォームについてゼロから教えるものではありません。

このガイダンスは、mongot を既存の可視性スタックに統合するサイトの信頼性エンジニアとプラットフォーム チームを対象としています。

次の表は、mongot がモニタリングのために公開するサーフェースを要約したものです。

表面
プロトコル
デフォルトのエンドポイントとなる接続されたデバイス
構成元
ノート

メトリクス

HTTP, Prometheus text format

localhost:9946/metrics

metrics
.address

含まれる config.default.ymllocalhost:9946 にのみバインドします。オフホストスクレイピングの場合は 0.0.0.0:9946 に上書きします。mongot はデフォルトでは認証を適用しません。ネットワーク層でエンドポイントとなる接続されたデバイスを保護します。

ライブネス

HTTP

localhost:8080/health

healthCheck
.address

mongot がサービスをバインドした後、{"status":"SERVING"} を返します。

準備状況

HTTP

localhost:8080/ready

healthCheck
.address

mongot がトラフィックを受け入れる準備ができている場合、{"status":"SERVING"} を返します。これは、レプリケーションが初期化され、カタログインデックスが照会可能であることを意味します。インデックスが存在しない場合、mongot は準備できていることを報告します。

ログ

stdout および stderr、またはファイル

ログ記録構成ごと

logging

設定に応じて、JSONまたはテキストのいずれかになります。

FTDC

オンディスクバイナリストリーム

<storage.dataPath>/diagnostic.data/

advancedConfigs.ftdc

デフォルトで有効になっています。advancedConfigs.ftdc で調整または無効にします。詳細については、mongot ログと FTDC を参照してください。

Grafana を使用した Prometheus は、ほとんどの自己管理型配置における推奨のモニタリングスタックです。スタックは無料で広範にサポートされており、mongot メトリクスエンドポイントで直接動作します。Prometheus は Community エディションと Enterprise エディションの両方で動作し、MongoDB Ops Manager の設定は必要ありません。

Prometheus 構成にスクレイプ ジョブを追加します。

scrape_configs:
- job_name: mongot
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets:
- mongot-host-1.internal:9946
- mongot-host-2.internal:9946
labels:
deployment: prod
edition: ce

MongoDB Controllers for Kubernetes Operator がマネージドする Kubernetes 配置の場合は、Prometheus Operator とともに PodMonitor または ServiceMonitor リソースを使用します。app=<resource-name>-search とラベル付けされたポッドをターゲットします。

apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: mongot
namespace: <mongot-namespace>
spec:
selector:
matchLabels:
app: <resource-name>-search
podMetricsEndpoints:
- port: metrics
interval: 15s

記録ルールにより PromQL の繰り返しが削減され、Grafana クエリが高速化されます。次のルールでは、自己管理型 mongot が公開するメトリクス名を使用します。

groups:
- name: mongot_recording
interval: 30s
rules:
- record: mongot:search_latency_p99
expr: max(mongot_command_searchCommandTotalLatency_seconds{quantile="0.99"})
- record: mongot:vector_search_latency_p99
expr: max(mongot_command_vectorSearchCommandTotalLatency_seconds{quantile="0.99"})
- record: mongot:search_rate:rate5m
expr: sum(rate(mongot_command_searchCommandTotalLatency_seconds_count[5m]))
- record: mongot:search_failure_rate:rate5m
expr: sum(rate(mongot_command_searchCommandFailure_total[5m]))
- record: mongot:replication_lag_ms:max
expr: max(mongot_index_stats_indexing_replicationLagMs)
- record: mongot:heap_utilization_post_gc
expr: mongot_jvm_gc_live_data_size_bytes / mongot_jvm_gc_max_data_size_bytes
- record: mongot:gc_pause_worst
expr: max(mongot_jvm_gc_pause_seconds_max)

推奨されたアラートを Prometheus アラート ルールに翻訳します。例:

groups:
- name: mongot_alerts
rules:
- alert: MongotDown
expr: up{job="mongot"} == 0
for: 1m
labels:
severity: page
annotations:
summary: "mongot is down ({{ $labels.instance }})"
- alert: MongotReplicationLagGrowing
expr: deriv(max(mongot_index_stats_indexing_replicationLagMs)[15m:1m]) > 500
for: 10m
labels:
severity: page
- alert: MongotHeapPressure
expr: mongot:heap_utilization_post_gc > 0.85
for: 5m
labels:
severity: page

アラートの全体を PromQL に翻訳する方法については、「mongot の推奨アラート」を参照してください。

mongot のスターター Grafana ダッシュボードには、次のパネル グループを含める必要があります。

  • プロセス: アップタイム、再起動回数、CPU、および常駐メモリ。

  • JVM: 使用されているヒープと最大ヒープの比較、GC 後のヒープ、GC 一時停止時間、およびスレッド。

  • レプリケーション: 現在の状態、ミリ秒単位のラグとレート、1 秒あたりに適用されたイベント。

  • インデックスの作成: アクティブなビルド、インデックスごとのステータス、インデックスの作成の失敗、およびマージのバックログ。

  • クエリ: 演算子によるレート、演算子によるレイテンシ p50、p95、p99、およびエラーレート。

  • エキューター: プールごとのキューの深さと拒否されたタスク。

  • ストレージ: 空きバイト数、IOPS、およびページフォールト率。

  • 埋め込み (有効な場合):リクエスト レート、レイテンシ、エラー、およびトークン スループット。

組織が OpenTelemetry に標準化されている場合、OpenTelemetry Collector は Prometheus エンドポイントから mongot メトリクスを取り込み、OTLP 互換のバックエンドに転送できます。

receivers:
prometheus:
config:
scrape_configs:
- job_name: mongot
scrape_interval: 15s
static_configs:
- targets:
- localhost:9946
exporters:
otlphttp:
endpoint: https://<your-otel-backend>
service:
pipelines:
metrics:
receivers:
- prometheus
exporters:
- otlphttp

このパターンはプロバイダーに依存しません。同じコレクター構成は、Honeycomb、Grafana クラウド、New Relic、その他のバックエンドで機能します。

ログを転送するには、mongot を構成して JSON を stdout に書き込みます。コレクターは、次に構造化されたフィールドを解析し、ログをバックエンドにルーティングできます。

mongot デフォルトでは、構造化された JSON ログを stdout と stderr に書き込みます。stdout を一元化されたログ プラットフォームに転送し、ログを JSON として取り込みます。

Fluent Bit と Vector はどちらも mongot ログコレクションに使用できます。ログをタグ付きストリームとして扱います。どのログパターンが最も重要かを知るには、mongot ログと FTDC を参照してください。

AWS でホストされる配置の場合、CloudWatch エージェントはログファイルを直接テールできます。Exception requiring resyncなどの主要なログパターンに CloudWatch メトリクフィルターを作成して、ログイベントをメトリクスに変換します。

mongot デフォルトでポート 8080 で 2 つの HTTP エンドポイントを公開します。

エンドポイント
使用する
意味

/health

ライブネス

mongot サービスをバインドしました。クラッシュまたはハングアップしたプロセスを検出するには、このエンドポイントとなる接続されたデバイスを使用してください。mongot がクエリを処理できることを示すものではありません。

/ready

準備状況

mongot インデックスのレプリケーションの初期化が完了しました。このエンドポイントとなる接続されたデバイスを使用して、ポッドへのトラフィックを制御します。

どちらのエンドポイントも HTTP 200 とともに JSON を返します。{"status":"SERVING"} を正常、{"status":"NOT_SERVING"} を異常として扱います。無効なクエリ パラメータは、HTTP 400 と {"error":"BAD_REQUEST"} を返します。

メトリクス エンドポイントと同様、/health/ready エンドポイントはデフォルトでは認証されません。ネットワーク レイヤーで保護します。

Kubernetes では、ライブネス プローブを /health に、レディネス プローブを /ready にマップします。

livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 3

両方のプローブに /health を使用すると、/health はサービスがバインドされるとすぐに SERVING を返すため、インデックスが初期化される前にポッドがトラフィックを受け取ることがあります。これらの信号を分離するために、2 つの**エンドポイントとなる接続されたデバイス**の**分裂**が存在します。

Kubernetes オペレータの MongoDB コントローラーが複数の mongot ポッドを管理する場合、デフォルトのロード バランサーがプロビジョニングされ、/ready エンドポイントに基づいてトラフィックがルーティングされます。複数の mongot インスタンスの前で独自のロード バランサーを実行する自己管理型の配置の場合は、/readySERVING を返すインスタンスにのみトラフィックをルーティングするようにロード バランサーを構成します。

一部のインデックスの初期化に失敗した場合でもポッドを準備完了状態に保つには、準備状態プローブパスを /ready?allowFailedIndexes=true に設定します。この設定は、意図的なトレードオフです。失敗したインデックスは、それらに到達するクエリに対して空の結果を返すためです。

配置で複数の mongot インスタンスが実行されている場合、各インスタンスでそれぞれのメトリクス エンドポイントが公開されます。各インスタンスを個別にスクレイプし、summaxavg などの Prometheus 集計を使用して、メトリクスの統合ビューを表示します。

レプリケーションラグ、エクゼキューター キューの深さ、および各インスタンスのクエリ レイテンシを個別におよび集計で追跡します。単一の頻繁なインスタンスは、提供するクエリのレイテンシを低下させる可能性があり、フリート全体の平均ではこの低下が隠される可能性があります。

シャーディングされたクラスターの場合は、各スクレイプにシャード名をラベル付けて、シャードごとにメトリクスをロールアップできるようにします。

MongoDB サポート ケースを開くときは、影響を受ける mongot インスタンスの FTDC キャプチャを添付してください。キャプチャ手順については、mongot ログと FTDC を参照してください。