コンテナディスカバリー管理

Datadog Agent は、利用可能なすべてのコンテナを自動検出する設定になっています。検出パラメーターを制限したりデータの収集をコンテナのサブセットのみに制限するには、それぞれのコンフィギュレーションで取り扱いを設定します。

: kubernetes.containers.runningkubernetes.pods.runningdocker.containers.running.stopped.running.total.stopped.total の各メトリクスは、この設定の影響を受けず、常にすべてのコンテナを対象とします。

Agent をホスト上のバイナリとして実行する場合は、Agent タブの説明に従ってオートディスカバリー境界を構成してください。Agent をコンテナとして実行する場合は、コンテナ化 Agent タブの説明に従ってオートディスカバリー境界を構成してください。

コンテナを除外する

nameimagekube_namespace に基づく除外ルールで Agent のオートディスカバリー境界からのコンテナを除外し、そこから NO DATA を集めます。コンテナと除外ルールが一致すると、最初に包含ルールに一致しない限り含まれることはありません。

: 除外条件は正規表現をサポートし、スペース区切り文字列のリストとして定義されます。

: 各コンテナを除外するには、name:.*image:.*kube_namespace:.* を使用できます。name:image:、または kube_namespace: のプレフィックスなしで .* を構成しても機能しません。

Agent v7.20 以降でオートディスカバリーから画像 <IMAGE_NAME> を持つ任意の Docker コンテナを削除し、ログとメトリクスを除外するには、Datadog Agent に以下の環境変数を追加してください。

DD_CONTAINER_EXCLUDE = "image:<IMAGE_NAME>"

たとえば、以下のコンフィギュレーションは Docker Cloud にあるこれらのコンテナを除外するように Agent に指示します。

DD_CONTAINER_EXCLUDE = "image:dockercloud/network-daemon image:dockercloud/cleanup image:dockercloud/logrotate image:dockercloud/events image:dockercloud/ntpd"

正規表現 DD_CONTAINER_EXCLUDE = "image:dockercloud/.*" を使用してすべてのコンテナを無視することもできます。

Agent v7.19 以前でオートディスカバリーから画像 <IMAGE_NAME>を持つ特定のDockerコンテナを削除するには、次の環境変数を Datadog Agent に追加します。

DD_AC_EXCLUDE = "image:<IMAGE_NAME>"

上記の通り、以下のコンフィギュレーションは Docker Cloud にあるこれらのコンテナを除外するように Agent に指示します。

DD_AC_EXCLUDE = "image:dockercloud/network-daemon image:dockercloud/cleanup image:dockercloud/logrotate image:dockercloud/events image:dockercloud/ntpd"

: DD_AC_EXCLUDEAgent v7.20 以降では推奨されません

Agent v7.20 以降でオートディスカバリーから名前 <NAME> を持つ任意の Docker コンテナを削除し、ログとメトリクスを除外するには、Datadog Agent に以下の環境変数を追加してください。

DD_CONTAINER_EXCLUDE = "name:<NAME>"

たとえば、除外ルールを使用して、Agentコンテナそのものを除外します。

DD_CONTAINER_EXCLUDE = "name:dd-agent"

Agent v7.19 以前でオートディスカバリーから名前<IMAGE_NAME>を持つ特定のDockerコンテナを削除するには、次の環境変数を Datadog Agent に追加します。

DD_AC_EXCLUDE = "name:<NAME>"

たとえば、除外ルールを使用して、Agentコンテナそのものを除外します。

DD_AC_EXCLUDE = "name:dd-agent"

Agent v7.20 以降では、除外条件を使いログのみまたはメトリクスのみを除外することもできます。たとえば、画像 <IMAGE_NAME>を持つコンテナからログを除外するには、次の環境変数を Datadog Agent に追加します。

DD_CONTAINER_EXCLUDE_LOGS = "image:<IMAGE_NAME>"

同様に、メトリクスを除外するには、

DD_CONTAINER_EXCLUDE_METRICS = "image:<IMAGE_NAME>"

Kubernetes で、ネームスペース<ネームスペース> 内のすべての Pod コンテナをオートディスカバリーから削除するには、Datadog Agent に以下の環境変数を追加します。

DD_CONTAINER_EXCLUDE = "kube_namespace:<NAMESPACE>"

オートディスカバリーから画像<IMAGE_NAME>を持つ特定のDockerコンテナを削除するには、Agent datadog.yaml コンフィギュレーションファイルに次のコンフィギュレーションブロックを追加します。

container_exclude: [image:<IMAGE_NAME>]

オートディスカバリーから名前<NAME>を持つ特定のDockerコンテナを削除するには、Agent datadog.yaml コンフィギュレーションファイルに次のコンフィギュレーションブロックを追加します。

container_exclude: [name:<NAME>]

Agent v7.20 以降では、除外条件を使いログのみまたはメトリクスのみを除外することもできます。たとえば、画像 <IMAGE_NAME>を持つコンテナからログを除外するには、次の環境変数を Datadog Agent に追加します。

container_exclude_logs: [image:<IMAGE_NAME>]

同様に、Agent v7.20 以降でメトリクスを除外するには、

container_exclude_metrics: [image:<IMAGE_NAME>]

Kubernetes で、ネームスペース<ネームスペース> 内のすべての Pod コンテナをオートディスカバリーから削除するには、Agent datadog.yaml コンフィギュレーションファイルに次のコンフィギュレーションブロックを追加します。

container_exclude: [kube_namespace:<NAMESPACE>]

: Kubernetes を使用する場合、マニフェスト.spec.containers[0].name にあるべきなのはコンテナ<NAME> です。

コンテナを対象に含める

name または image に基づく包含ルールで` Agent のオートディスカバリー境界からのコンテナを含め、そのコンテナからのみのデータを集めます。コンテナと包含ルールが一致すると、常にオートディスカバリー境界に含まれることになります。

: 包含ルールは正規表現をサポートし、スペース区切り文字列のリストとして定義されます。

Agent v7.20 以降でオートディスカバリーから画像 <IMAGE_NAME>を持つ特定のDockerコンテナを含めるには、次の環境変数を Datadog Agent に追加します。

DD_CONTAINER_INCLUDE = "image:<IMAGE_NAME>"

Agent v7.19 以前でオートディスカバリーから画像 <IMAGE_NAME> を持つ特定の Docker コンテナを含めるには、次の環境変数を Datadog Agent に追加します。

DD_AC_INCLUDE = "image:<IMAGE_NAME>"

: DD_AC_INCLUDEAgent v7.20 以降では推奨されません

Agent v7.20 以降でオートディスカバリーから名前 <NAME>を持つ特定のDockerコンテナを含めるには、次の環境変数を Datadog Agent に追加します。

DD_CONTAINER_INCLUDE = "name:<NAME>"

たとえば、UbuntuDebian 画像のみをモニターして残りを削除したい場合、次のように指定します。

DD_CONTAINER_EXCLUDE = "image:.*"
DD_CONTAINER_INCLUDE = "image:ubuntu image:debian"

Agent v7.19 以前でオートディスカバリーから名前 <IMAGE_NAME> を持つ特定の Docker コンテナを含めるには、次の環境変数を Datadog Agent に追加します。

DD_AC_INCLUDE = "name:<NAME>"

上記の通り、UbuntuDebian 画像のみをモニターして残りを削除したい場合、次のように指定します。

DD_AC_EXCLUDE = "image:.*"
DD_AC_INCLUDE = "image:ubuntu image:debian"

Agent v7.20 以降では、包含条件を使いログのみまたはメトリクスのみを含めることもできます。たとえば、画像 <IMAGE_NAME>を持つコンテナのログを含めるには、次の環境変数を Datadog Agent に追加します。

DD_CONTAINER_INCLUDE_LOGS = "image:<IMAGE_NAME>"

同様に、メトリクスを含めるには、

DD_CONTAINER_INCLUDE_METRICS = "image:<IMAGE_NAME>"

Kubernetes で、ネームスペース<ネームスペース> 内のすべての Pod コンテナをオートディスカバリーに含めるには、Datadog Agent に以下の環境変数を追加します。

DD_CONTAINER_INCLUDE = "kube_namespace:<NAMESPACE>"

オートディスカバリーから画像<IMAGE_NAME>を持つ特定のDockerコンテナを含めるには、Agent datadog.yaml コンフィギュレーションファイルに次のコンフィギュレーションブロックを追加します。

container_include: [image:<IMAGE_NAME>]

オートディスカバリーから名前<NAME>を持つ特定のDockerコンテナを含めるには、Agent datadog.yaml コンフィギュレーションファイルに次のコンフィギュレーションブロックを追加します。

container_include: [name:<NAME>]

Agent v7.20 以降では、包含条件を使いログのみまたはメトリクスのみを含めることもできます。たとえば、画像 <IMAGE_NAME>を持つコンテナのログを含めるには、次の環境変数を Datadog Agent に追加します。

container_include_logs: [image:<IMAGE_NAME>]

同様に、メトリクスを含めるには、

container_include_metrics: [image:<IMAGE_NAME>]

Kubernetes で、ネームスペース <ネームスペース> 内のすべての Pod コンテナをオートディスカバリーに含めるには、Agent datadog.yaml コンフィギュレーションファイルに次のコンフィギュレーションブロックを追加します。

container_include: [kube_namespace:<NAMESPACE>]

: Kubernetes を使用する場合、マニフェスト.spec.containers[0].name にあるべきなのはコンテナ<NAME> です。

包含動作と除外動作

規則がグローバルであるかメトリクスやログのみに適用されるかにかかわらず、常に包含動作が優先されます。

クロスカテゴリーの包含/除外規則を混在させることはできません。たとえば、画像名 <IMAGE_NAME_1> のコンテナを含め、画像名 <IMAGE_NAME_2> のコンテナからメトリクスのみを除外する際、以下のようにします。

DD_CONTAINER_INCLUDE_METRICS = "image:<IMAGE_NAME_1>"
DD_CONTAINER_INCLUDE_LOGS = "image:<IMAGE_NAME_1>"
DD_CONTAINER_EXCLUDE_METRICS = "image:<IMAGE_NAME_2>"

つまり、DD_CONTAINER_INCLUDE = "image:<IMAGE_NAME_1>" の設定だけでは不十分です

container_include_metrics: [image:<IMAGE_NAME_1>]
container_include_logs: [image:<IMAGE_NAME_1>]
container_exclude_metrics: [image:<IMAGE_NAME_2>]

つまり、container_include: [image:<IMAGE_NAME_1>] の設定だけでは不十分です。

グローバルリストと選択(ログとメトリクス)リストの間に相互関係はありません。つまり、コンテナをグローバルに除外してから container_include_logscontainer_include_metrics で含めることはできません。

Pause コンテナ

Datadog Agent は、デフォルトで Kubernetes や OpenShift の Pause コンテナを除外しますが、除外コンテナのようなコンテナ数にはカウントされます。

この動作を無効にし、オートディスカバリー境界に Pause コンテナに含めるには、Agent datadog.yaml コンフィギュレーションファイルexclude_pause_container パラメーターを false に設定するか、Agent 環境変数 DD_EXCLUDE_PAUSE_CONTAINER="false" を使用します。

その他の参考資料