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

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

環境変数

Agent をコンテナとして実行する場合は、Containerized Agent タブの指示を使用します。Agent をホスト上のバイナリとして実行する場合は、Host Agent タブの指示を使用します。

Agent v7.20+ では、以下の環境変数を使用して、イメージ、名前、または Kubernetes ネームスペースによってコンテナを除外します。除外されたコンテナからはログとメトリクスが収集されません。

環境変数説明
DD_CONTAINER_EXCLUDE除外するコンテナのブロックリスト。
DD_CONTAINER_EXCLUDE_METRICSメトリクスが除外されるコンテナのブロックリスト。
DD_CONTAINER_EXCLUDE_LOGSログが除外されるコンテナのブロックリスト。
DD_CONTAINER_INCLUDE含めるコンテナの許可リスト。
DD_CONTAINER_INCLUDE_METRICSメトリクスが含まれるコンテナの許可リスト。
DD_CONTAINER_INCLUDE_LOGSログが含まれるコンテナの許可リスト。

Agent <=v7.19 では、環境変数 DD_AC_INCLUDEDD_AC_EXCLUDE を使用して、イメージまたは名前でコンテナを含めたり除外したりできます。これらの環境変数は、それ以降の Agent のバージョンでは非推奨です。

環境変数説明
container_exclude除外するコンテナのブロックリスト。
container_exclude_metricsメトリクスが除外されるコンテナのブロックリスト。Agent v7.20+ でサポートされています。
container_exclude_logsログが除外されるコンテナのブロックリスト。Agent v7.20+ でサポートされています。
container_include含めるコンテナのブロックリスト。
container_include_metricsメトリクスが含まれるコンテナのブロックリスト。Agent v7.20+ でサポートされています。
container_include_logsログが含まれるコンテナのブロックリスト。Agent v7.20+ でサポートされています。

使用方法

値の定義

それぞれの包含または除外は、スペースで区切られた正規表現文字列のリストとして定義されます。コンテナの名前 (name)、イメージ名 (image)、Kubernetes ネームスペース (kube_namespace) に基づいて、コンテナを包含または除外できます。

dd-agent という名前のコンテナを除外するには

DD_CONTAINER_EXCLUDE = "name:^dd-agent$"

イメージ名が dockercloud/network-daemondockercloud/logrotate の 2 つのコンテナを除外するには

DD_CONTAINER_EXCLUDE = "image:^dockercloud/network-daemon$ image:^dockercloud/logrotate$"

すべてのコンテナを除外するには

DD_CONTAINER_EXCLUDE = "name:.*"

また、image:.* または kube_namespace:.* を使用することもできます。name:image:kube_namespace: のプレフィックスを付けずに .* を構成しても動作しません。

それぞれの包含または除外は、スペースで区切られた正規表現文字列のリストとして定義されます。コンテナの名前 (name)、イメージ名 (image)、Kubernetes ネームスペース (kube_namespace) に基づいて、コンテナを包含または除外できます。

dd-agent という名前のコンテナを除外するには

container_exclude: [name:^dd-agent$]

イメージ名が dockercloud/network-daemondockercloud/logrotate の 2 つのコンテナを除外するには

container_exclude: [image:^dockercloud/network-daemon$ image:^dockercloud/logrotate$]

すべてのコンテナを除外するには

container_exclude: [name:.*]

また、image:.* または kube_namespace:.* を使用することもできます。name:image:kube_namespace: のプレフィックスを付けずに .* を構成しても動作しません。

包含動作と除外動作

包含は除外よりも優先されます。例えば、ubuntudebian のイメージだけを監視したい場合は、まず他のイメージをすべて除外してから、どのイメージを含めるかを指定します。

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

カテゴリーをまたがる包含/除外ルールを混在させることはできません。例えば、イメージ名 foo を持つコンテナを含めて、イメージ名 bar を持つコンテナのメトリクスのみを除外したい場合、以下のようにすると不十分です。

DD_CONTAINER_EXCLUDE_METRICS = "image:^bar$"
DD_CONTAINER_INCLUDE = "image:^foo$"

代わりに、以下を使用します。

DD_CONTAINER_EXCLUDE_METRICS = "image:^bar$"
DD_CONTAINER_INCLUDE_METRICS = "image:^foo$"
DD_CONTAINER_INCLUDE_LOGS = "image:^foo$"

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

包含は除外よりも優先されます。例えば、ubuntudebian のイメージだけを監視したい場合は、まず他のイメージをすべて除外してから、どのイメージを含めるかを指定します。

container_exclude: [image:.*]
container_include: [image:ubuntu image:debian]

カテゴリーをまたがる包含/除外ルールを混在させることはできません。例えば、イメージ名 foo を持つコンテナを含めて、イメージ名 bar を持つコンテナのメトリクスのみを除外したい場合、以下のようにすると不十分です。

container_exclude_metrics: [image:^bar$]
container_include: [image:^foo$]

代わりに、以下を使用します。

container_exclude_metrics: [image:^bar$]
container_include_metrics: [image:^foo$]
container_include_logs: [image:^foo$]

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

環境変数を設定する

Datadog Operator で、これらの環境変数を spec.override.nodeAgent.env の下に設定します。

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
  override:
    nodeAgent:
    env:
      - name: DD_CONTAINER_EXCLUDE
        value: "image:<IMAGE_NAME>"

Helm チャートの datadog.containerExcludedatadog.containerIncludedatadog.containerExcludeLogsdatadog.containerIncludeLogsdatadog.containerExcludeMetricsdatadog.containerIncludeMetrics にスペース区切りの文字列を指定します。また、excludePauseContainertrue または false に設定することもできます。

datadog:
  containerExclude: "image:<IMAGE_NAME_1> image:<IMAGE_NAME_2>"
  containerInclude: "image:<IMAGE_NAME_3> image:<IMAGE_NAME_4>"
  excludePauseContainer: true

Pause コンテナ

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

この動作を無効にし、一時停止コンテナをオートディスカバリーの境界に含めるには

DD_EXCLUDE_PAUSE_CONTAINERfalse に設定します。

exclude_pause_containerfalse に設定します。

その他の参考資料