Supported OS Linux Mac OS Windows

インテグレーションバージョン8.3.0

MongoDB ダッシュボード

概要

MongoDB を Datadog に接続して、以下のことができます。

  • MongoDB のキーメトリクスを視覚化できます。
  • MongoDB のパフォーマンスをアプリケーションの他の部分と関連付けることができます。

また、カスタム find/count/aggregate クエリを使用して、独自のメトリクスを作成することもできます。

: このインテグレーションには MongoDB v3.0 以降が必要です。MongoDB Atlas と Datadog のインテグレーションは、M10+ クラスターでのみ利用可能です。このインテグレーションは、Alibaba ApsaraDB と AWS DocumentDB のインスタンスベースのクラスターもサポートしています。一方、DocumentDB Elastic クラスターは、クラスター (mongos) エンドポイントのみを公開するためサポートされていません。

セットアップ

インストール

MongoDB チェックは Datadog Agent パッケージに含まれています。追加でインストールする必要はありません。

アーキテクチャ

ほとんどの低レベルのメトリクス (稼働時間、ストレージサイズなど) は、すべての mongod ノードで収集する必要があります。その他の高レベルのメトリクス (コレクションやインデックスの統計など) は、一度だけ収集する必要があります。これらの理由により、Agent の構成方法は mongo クラスターのデプロイ方法によって異なります。

スタンドアロン

このインテグレーションを単一ノードの MongoDB デプロイ用に構成するには

MongoDB の準備

Mongo シェルで、admin データベースに Datadog Agent 用の読み取り専用ユーザーを作成します。

# 管理者ユーザーとして認証します。
use admin
db.auth("admin", "<YOUR_MONGODB_ADMIN_PASSWORD>")

# Datadog Agent のユーザーを作成します。
db.createUser({
  "user": "datadog",
  "pwd": "<UNIQUEPASSWORD>",
  "roles": [
    { role: "read", db: "admin" },
    { role: "clusterMonitor", db: "admin" },
    { role: "read", db: "local" },
    # コレクション/インデックスの統計情報を収集するデータベースへの読み取り専用アクセス権を追加します。
    { role: "read", db: "mydb" },
    { role: "read", db: "myanotherdb" },
    # または、すべてのデータベースに読み取り専用アクセス権を付与します。
    { role: "readAnyDatabase", db: "admin" }
  ]
})
Agent の構成

使用可能なすべての mongo メトリクスを収集するには、できれば同じノードで実行している単一の Agent だけが必要です。コンフィギュレーションオプションについては、以下を参照してください。

レプリカセット

このインテグレーションを MongoDB レプリカセット用に構成するには

MongoDB の準備

Mongo シェルで、プライマリに対して認証し、admin データベースに Datadog Agent 用の読み取り専用ユーザーを作成します。

# 管理者ユーザーとして認証します。
use admin
db.auth("admin", "<YOUR_MONGODB_ADMIN_PASSWORD>")

# Datadog Agent のユーザーを作成します。
db.createUser({
  "user": "datadog",
  "pwd": "<UNIQUEPASSWORD>",
  "roles": [
    { role: "read", db: "admin" },
    { role: "clusterMonitor", db: "admin" },
    { role: "read", db: "local" },
    # コレクション/インデックスの統計情報を収集するデータベースへの読み取り専用アクセス権を追加します。
    { role: "read", db: "mydb" },
    { role: "read", db: "myanotherdb" },
    # または、すべてのデータベースに読み取り専用アクセス権を付与します。
    { role: "readAnyDatabase", db: "admin" }
  ]
})
Agent の構成

MongoDB レプリカセットの各ホストに Datadog Agent をインストールし、そのホスト (localhost) 上のレプリカに接続するように Agent を構成します。各ホストで Agent を実行することで、レイテンシーと実行時間が短縮され、ホストに障害が発生した場合でもデータが接続されるようになります。

例えば、プライマリノードで、

init_config:
instances:
  - hosts:
      - mongo-primary:27017

セカンダリノードで、

init_config:
instances:
  - hosts:
      - mongo-secondary:27017

ターシャリノードで、

init_config:
instances:
  - hosts:
      - mongo-tertiary:27017

シャード

このインテグレーションを MongoDB シャードクラスター用に構成するには

MongoDB の準備

クラスタ内のシャードごとに、レプリカセットのプライマリに接続し、admin データベースに Datadog Agent 用のローカル読み取り専用ユーザーを作成します。

# 管理者ユーザーとして認証します。
use admin
db.auth("admin", "<YOUR_MONGODB_ADMIN_PASSWORD>")

# Datadog Agent のユーザーを作成します。
db.createUser({
  "user": "datadog",
  "pwd": "<UNIQUEPASSWORD>",
  "roles": [
    { role: "read", db: "admin" },
    { role: "clusterMonitor", db: "admin" },
    { role: "read", db: "local" }
  ]
})

次に、mongos プロキシから同じユーザーを作成します。このアクションにより、コンフィギュレーションサーバーにローカルユーザーが作成され、直接接続が可能になります。

Agent の構成
  1. 各シャードのメンバーごとに 1 つの Agent を構成します。
  2. コンフィギュレーションサーバーのメンバーごとに 1 つの Agent を構成します。
  3. mongos プロキシを介してクラスターに接続するように 1 つの追加 Agent を構成します。この mongos プロキシは、監視目的専用の新しい mongos プロキシでも、既存の mongos プロキシでもかまいません。

: アービターノードの監視はサポートされていません (詳細については、MongoDB Replica Set Arbiter を参照してください)。ただし、アービターノードのステータス変更は、プライマリに接続されている Agent によって報告されます。

構成

ホストで実行されている Agent 用にこのチェックを構成する場合は、以下の手順に従ってください。コンテナ環境の場合は、DockerKubernetes、または ECS セクションを参照してください。

ホスト

ホストで実行中の Agent に対してこのチェックを構成するには

メトリクスの収集
  1. Agent のコンフィギュレーションディレクトリのルートにある conf.d フォルダーの mongo.d/conf.yaml ファイルを編集します。使用可能なすべてのコンフィギュレーションオプションについては、サンプル mongo.d/conf.yaml を参照してください。

    init_config:
    
    instances:
        ## @param hosts - list of strings - required
        ## Hosts to collect metrics from, as is appropriate for your deployment topology.
        ## E.g. for a standalone deployment, specify the hostname and port of the mongod instance.
        ## For replica sets or sharded clusters, see instructions in the sample conf.yaml.
        ## Only specify multiple hosts when connecting through mongos
        #
      - hosts:
          - <HOST>:<PORT>
    
        ## @param username - string - optional
        ## The username to use for authentication.
        #
        username: datadog
    
        ## @param password - string - optional
        ## The password to use for authentication.
        #
        password: <UNIQUEPASSWORD>
    
        ## @param database - string - optional
        ## The database to collect metrics from.
        #
        database: <DATABASE>
    
        ## @param options - mapping - optional
        ## Connection options. For a complete list, see:
        ## https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options
        #
        options:
          authSource: admin
    
  2. Agent を再起動します

データベースオートディスカバリー

Datadog Agent v7.56 から、データベースのオートディスカバリーを有効にして、MongoDB インスタンス上のすべてのデータベースからメトリクスを自動的に収集することができます。 データベースオートディスカバリーはデフォルトで無効になっていることに注意してください。自動的に発見されたデータベースからメトリクスを収集するには、データベースへの読み取りアクセスが必要です。 これを有効にするには、mongo.d/conf.yaml ファイルに次の構成を追加します。

   init_config:

   instances:
       ## @param hosts - 文字列のリスト - 必須
       ## デプロイのトポロジに応じて、メトリクスを収集するホスト。
       ## 例: スタンドアロンデプロイの場合、mongod インスタンスのホスト名とポートを指定します。
       ## レプリカセットまたはシャードクラスターについては、サンプルの conf.yaml の説明を参照してください。
       ## mongos 経由で接続する場合のみ、複数のホストを指定します。
       #
     - hosts:
         - <HOST>:<PORT>

       ## @param username - 文字列 - オプション
       ## 認証に使用するユーザー名。
       #
       username: datadog

       ## @param password - 文字列 - オプション
       ## 認証に使用するパスワード。
       #
       password: <UNIQUE_PASSWORD>

       ## @param options - mapping - オプション
       ## 接続オプション。完全なリストは以下を参照してください。
       ## https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options
       #
       options:
         authSource: admin

       ## @param database_autodiscovery - マッピング - オプション
       ## データベースオートディスカバリーを有効にして、すべての MongoDB データベースからメトリクスを自動的に収集します。
       #
       database_autodiscovery:
         ## @param enabled - ブール値 - 必須
         ## データベースオートディスカバリーを有効にします。
         #
         enabled: true

         ## @param include - 文字列のリスト - オプション
         ## オートディスカバリーに含めるデータベースのリスト。複数のデータベースにマッチさせるには正規表現を使用します。
         ## 例えば、"mydb" で始まるすべてのデータベースを含めるには、"^mydb.*" を使用します。
         ## デフォルトでは、include は ".*" に設定され、すべてのデータベースが含まれます。
         #
         include:
            - "^mydb.*"

         ## @param exclude - 文字列のリスト - オプション
         ## オートディスカバリーから除外するデータベースのリスト。複数のデータベースにマッチさせるには正規表現を使用します。
         ## 例えば、"mydb" で始まるすべてのデータベースを除外するには、"^mydb.*" を使用します。
         ## 除外リストと包含リストが競合する場合は、除外リストが優先されます。
         #
         exclude:
            - "^mydb2.*"
            - "admin$"

         ## @param max_databases - 整数 - オプション
         ## メトリクスを収集するデータベースの最大数。デフォルト値は 100 です。
         #
         max_databases: 100

         ## @param refresh_interval - 整数 - オプション
         ## データベースのリストを更新する間隔を秒単位で指定します。デフォルト値は 600 秒です。
         #
         refresh_interval: 600
  1. Agent を再起動します
トレースの収集

Datadog APM は Mongo を統合して、分散システム全体のトレースを確認します。Datadog Agent v6 以降では、トレースの収集はデフォルトで有効化されています。トレースの収集を開始するには、以下の手順に従います。

  1. Datadog でトレースの収集を有効にします
  2. Mongo へのリクエストを作成するアプリケーションをインスツルメントします
ログ収集

Agent バージョン 6.0 以降で利用可能

  1. Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml ファイルでこれを有効にします。

    logs_enabled: true
    
  2. MongoDB のログの収集を開始するには、次の構成ブロックを mongo.d/conf.yaml ファイルに追加します。

    logs:
      - type: file
        path: /var/log/mongodb/mongodb.log
        service: mongo
        source: mongodb
    

    service パラメーターと path パラメーターの値を変更し、環境に合わせて構成します。使用可能なすべてのコンフィギュレーションオプションについては、サンプル mongo.yaml を参照してください。

  3. Agent を再起動します

Docker

コンテナで実行中の Agent に対してこのチェックを構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.check_names"='["mongo"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"hosts": ["%%host%%:%%port%%"], "username": "datadog", "password" : "<UNIQUEPASSWORD>", "database": "<DATABASE>"}]'
ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Docker ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.logs"='[{"source":"mongodb","service":"<SERVICE_NAME>"}]'
トレースの収集

コンテナ化されたアプリケーションの APM は、Agent v6 以降でサポートされていますが、トレースの収集を開始するには、追加のコンフィギュレーションが必要です。

Agent コンテナで必要な環境変数

パラメーター
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

利用可能な環境変数およびコンフィギュレーションの全リストについては、Docker アプリケーションのトレース を参照してください。

次に、アプリケーションコンテナをインスツルメントし、Agent コンテナの名前に DD_AGENT_HOST を設定します。

Kubernetes

このチェックを、Kubernetes で実行している Agent に構成します。

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートをポッドアノテーションとして設定します。他にも、ファイル、ConfigMap、または key-value ストアを使用してテンプレートを構成できます。

Annotations v1 (Datadog Agent < v7.36 向け)

apiVersion: v1
kind: Pod
metadata:
  name: mongo
  annotations:
    ad.datadoghq.com/mongo.check_names: '["mongo"]'
    ad.datadoghq.com/mongo.init_configs: '[{}]'
    ad.datadoghq.com/mongo.instances: |
      [
        {
          "hosts": ["%%host%%:%%port%%"],
          "username": "datadog",
          "password": "<UNIQUEPASSWORD>",
          "database": "<DATABASE>"
        }
      ]      
spec:
  containers:
    - name: mongo

Annotations v2 (Datadog Agent v7.36+ 向け)

apiVersion: v1
kind: Pod
metadata:
  name: mongo
  annotations:
    ad.datadoghq.com/mongo.checks: |
      {
        "mongo": {
          "init_config": {},
          "instances": [
            {
              "hosts": ["%%host%%:%%port%%"],
              "username": "datadog",
              "password": "<UNIQUEPASSWORD>",
              "database": "<DATABASE>"
            }
          ]
        }
      }      
spec:
  containers:
    - name: mongo
ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Kubernetes ログ収集を参照してください。

次に、ログのインテグレーションをポッドアノテーションとして設定します。これは、ファイル、ConfigMap、または key-value ストアを使用して構成することも可能です。

Annotations v1/v2

apiVersion: v1
kind: Pod
metadata:
  name: mongo
  annotations:
    ad.datadoghq.com/mongo.logs: '[{"source":"mongodb","service":"<SERVICE_NAME>"}]'
spec:
  containers:
    - name: mongo
トレースの収集

コンテナ化されたアプリケーションの APM は、Agent v6 以降を実行するホストでサポートされていますが、トレースの収集を開始するには、追加のコンフィギュレーションが必要です。

Agent コンテナで必要な環境変数

パラメーター
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

利用可能な環境変数とコンフィギュレーションの完全なリストについては、Kubernetes アプリケーションのトレースおよび Kubernetes DaemonSet のセットアップを参照してください。

次に、アプリケーションコンテナをインスツルメントし、Agent コンテナ名に DD_AGENT_HOST を設定します。

ECS

このチェックを、ECS で実行している Agent に構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "mongo",
    "image": "mongo:latest",
    "dockerLabels": {
      "com.datadoghq.ad.check_names": "[\"mongo\"]",
      "com.datadoghq.ad.init_configs": "[{}]",
      "com.datadoghq.ad.instances": "[{\"hosts\": [\"%%host%%:%%port%%\"], \"username\": \"datadog\", \"password\": \"<UNIQUEPASSWORD>\", \"database\": \"<DATABASE>\"}]"
    }
  }]
}
ログ収集

Agent バージョン 6.0 以降で利用可能

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、ECS ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "mongo",
    "image": "mongo:latest",
    "dockerLabels": {
      "com.datadoghq.ad.logs": "[{\"source\":\"mongodb\",\"service\":\"<SERVICE_NAME>\"}]"
    }
  }]
}
トレースの収集

コンテナ化されたアプリケーションの APM は、Agent v6 以降でサポートされていますが、トレースの収集を開始するには、追加のコンフィギュレーションが必要です。

Agent コンテナで必要な環境変数

パラメーター
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

利用可能な環境変数およびコンフィギュレーションの全リストについては、Docker アプリケーションのトレース を参照してください。

次に、アプリケーションのコンテナをインスツルメントし、EC2 プライベート IP アドレスDD_AGENT_HOST を設定します。

検証

Agent の status サブコマンドを実行し、Checks セクションで mongo を探します。

収集データ

メトリクス

メトリクスの詳細については、MongoDB 3.0 マニュアルを参照してください。

追加のメトリクス

次のメトリクスは、デフォルトでは収集されません。これらを収集するには、mongo.d/conf.yaml ファイルで additional_metrics パラメーターを使用してください。

メトリクスのプレフィックス収集するために additional_metrics に追加する項目
mongodb.collectioncollection
mongodb.usage.commandstop
mongodb.usage.getmoretop
mongodb.usage.inserttop
mongodb.usage.queriestop
mongodb.usage.readLocktop
mongodb.usage.writeLocktop
mongodb.usage.removetop
mongodb.usage.totaltop
mongodb.usage.updatetop
mongodb.usage.writeLocktop
mongodb.tcmalloctcmalloc
mongodb.metrics.commandsmetrics.commands
mongodb.chunks.jumbojumbo_chunks
mongodb.chunks.totaljumbo_chunks
mongodb.sharded_data_distributionsharded_data_distribution

イベント

レプリケーション状態の変化:
このチェックは、Mongo ノードでレプリケーション状態が変化するたびにイベントを送信します。

サービスチェック

トラブルシューティング

ご不明な点は、Datadog のサポートチームまでお問い合わせください。

その他の参考資料

お役に立つドキュメント、リンクや記事:

PREVIEWING: may/embedded-workflows