注: AD Annotations v2 は、インテグレーション構成を簡素化するために、Datadog Agent 7.36 で導入されました。Datadog Agent の以前のバージョンでは、AD Annotations v1 を使用してください。
Docker コンテナに対してオートディスカバリーを自動的に有効にするには、/var/run/docker.sock
をコンテナ化 Agent にマウントします。Windows では、\\.\pipe\docker_engine
をマウントします。
インテグレーションテンプレートは、Docker ラベルとして格納できます。オートディスカバリーを使用して、Agent は自身が Docker 上で実行されているかどうかを検出し、すべてのラベルでインテグレーションテンプレートを自動的に探します。オートディスカバリーは、以下の例のようなラベルを前提としています。
Dockerfile:
LABEL "com.datadoghq.ad.checks"='{"<INTEGRATION_NAME>": {"instances": [<INSTANCE_CONFIG>]}}'
docker-compose.yaml:
labels:
com.datadoghq.ad.checks: '{"<INTEGRATION_NAME>": {"instances": [<INSTANCE_CONFIG>]}}'
docker run
、nerdctl run
、または podman run
コマンドを使用:
-l com.datadoghq.ad.checks="{\"<INTEGRATION_NAME>\": {\"instances\": [<INSTANCE_CONFIG>]}}"
注: これらのラベルを構成する際に、JSON をエスケープすることができます。例:
docker run --label "com.datadoghq.ad.checks="{\"apache\": {\"instances\": [{\"apache_status_url\":\"http://%%host%%/server-status?auto2\"}]}}"
Docker Swarm:
Docker Cloud の Swarm モードを使用する場合は、以下のようにラベルをイメージに適用する必要があります。
version: "1.0"
services:
...
project:
image: '<IMAGE_NAME>'
labels:
com.datadoghq.ad.checks: '{"<INTEGRATION_NAME>": {"instances": [<INSTANCE_CONFIG>]}}'
注: Datadog はオートディスカバリーを構成する際に、コンテナ化環境で Docker を使用してテレメトリを統一することをお勧めします。詳細は、統合サービスタグ付けのドキュメントを参照してください。
Docker コンテナに対してオートディスカバリーを自動的に有効にするには、/var/run/docker.sock
をコンテナ化 Agent にマウントします。Windows では、\\.\pipe\docker_engine
をマウントします。
インテグレーションテンプレートは、Docker ラベルとして格納できます。オートディスカバリーを使用して、Agent は自身が Docker 上で実行されているかどうかを検出し、すべてのラベルでインテグレーションテンプレートを自動的に探します。オートディスカバリーは、以下の例のようなラベルを前提としています。
Dockerfile:
LABEL "com.datadoghq.ad.check_names"='[<インテグレーション名>]'
LABEL "com.datadoghq.ad.init_configs"='[<初期コンフィギュレーション>]'
LABEL "com.datadoghq.ad.instances"='[<インスタンスコンフィギュレーション>]'
docker-compose.yaml:
labels:
com.datadoghq.ad.check_names: '[<インテグレーション名>]'
com.datadoghq.ad.init_configs: '[<初期コンフィギュレーション>]'
com.datadoghq.ad.instances: '[<インスタンスコンフィギュレーション>]'
docker run
、nerdctl run
、または podman run
コマンドを使用:
-l com.datadoghq.ad.check_names='[<インテグレーション名>]' -l com.datadoghq.ad.init_configs='[<初期コンフィギュレーション>]' -l com.datadoghq.ad.instances='[<インスタンスコンフィギュレーション>]'
注: これらのラベルを構成する際に、JSON をエスケープすることができます。例:
docker run --label "com.datadoghq.ad.check_names=[\"redisdb\"]" --label "com.datadoghq.ad.init_configs=[{}]" --label "com.datadoghq.ad.instances=[{\"host\":\"%%host%%\",\"port\":6379}]" --label "com.datadoghq.ad.logs=[{\"source\":\"redis\"}]" --name redis redis
Docker Swarm:
Docker Cloud の Swarm モードを使用する場合は、以下のようにラベルをイメージに適用する必要があります。
version: "1.0"
services:
...
project:
image: '<イメージ名>'
labels:
com.datadoghq.ad.check_names: '[<インテグレーション名>]'
com.datadoghq.ad.init_configs: '[<初期コンフィギュレーション>]'
com.datadoghq.ad.instances: '[<インスタンスコンフィギュレーション>]'
注: Datadog はオートディスカバリーを構成する際に、コンテナ化環境で Docker を使用してテレメトリを統一することをお勧めします。詳細は、統合サービスタグ付けのドキュメントを参照してください。
テンプレートをローカルファイルとして保存し、それをコンテナ化 Agent 内にマウントする場合は、外部サービスや特定のオーケストレーションプラットフォームを必要としません。この方法の欠点は、テンプレートを変更、追加、または削除するたびに、Agent コンテナを再起動する必要がある点です。Agent は、マウントされた /conf.d
ディレクトリでオートディスカバリーテンプレートを探します。
Agent v6.2.0 (および v5.24.0) 以降、デフォルトテンプレートはポートを自動検出するのではなく、監視対象ソフトウェアのデフォルトポートを使用します。別のポートを使用する必要がある場合は、Docker コンテナラベルで、カスタムオートディスカバリーテンプレートを指定します。
デフォルトのインテグレーションテンプレートは、基本的なケース向けです。追加オプションを有効にするためにカスタム Datadog インテグレーション構成が必要な場合は、別のコンテナ識別子を使用します。あるいは、テンプレート変数インデックスを使用して、独自のオートディスカバリー構成ファイルを作成します。
- ホストに
conf.d/<INTEGRATION_NAME>.d/conf.yaml
ファイルを作成し、カスタムオートディスカバリー構成を追加します。 - ホスト の
conf.d/
フォルダーをコンテナ化 Agent の conf.d
フォルダーにマウントします。
オートディスカバリー構成ファイル例:
ad_identifiers:
<INTEGRATION_AUTODISCOVERY_IDENTIFIER>
init_config:
<INIT_CONFIG>
instances:
<INSTANCES_CONFIG>
<INTEGRATION_AUTODISCOVERY_IDENTIFIER>
の詳細については、オートディスカバリーコンテナ識別子のドキュメントを参照してください。
注: Agent はファイル名から直接 <INTEGRATIONS_NAME>
を推測するため、この名前を設定する必要はありません。
オートディスカバリーでは、Consul、Etcd、および Zookeeper をインテグレーションテンプレートソースとして使用できます。key-value ストアを使用するには、Agent の datadog.yaml
構成ファイルでストアを構成し、このファイルをコンテナ化 Agent 内にマウントします。あるいは、key-value ストアを環境変数としてコンテナ化 Agent に渡します。
datadog.yaml での構成
datadog.yaml
ファイルで、key-value ストアの <KEY_VALUE_STORE_IP>
アドレスと <KEY_VALUE_STORE_PORT>
を以下のように設定します。
config_providers:
- name: etcd
polling: true
template_dir: /datadog/check_configs
template_url: '<KV_STORE_IP>:<KV_STORE_PORT>'
username:
password:
- name: consul
polling: true
template_dir: datadog/check_configs
template_url: '<KV_STORE_IP>:<KV_STORE_PORT>'
ca_file:
ca_path:
cert_file:
key_file:
username:
password:
token:
- name: zookeeper
polling: true
template_dir: /datadog/check_configs
template_url: '<KV_STORE_IP>:<KV_STORE_PORT>'
username:
password:
次に、Agent を再起動して、構成の変更を適用します。
環境変数での構成
key-value ストアがテンプレートソースとして有効になっている場合、Agent はキー /datadog/check_configs
の下でテンプレートを探します。オートディスカバリーは、以下のような key-value 階層を前提とします。
/datadog/
check_configs/
<コンテナ識別子>/
- check_names: ["<インテグレーション名>"]
- init_configs: ["<初期コンフィギュレーション>"]
- instances: ["<インスタンスコンフィギュレーション>"]
...
注: key-value ストアを使用している場合、オートディスカバリーは特定の構成を特定のコンテナに適用するために、<CONTAINER_IDENTIFIER>
と .spec.containers[0].image
の一致を試みることで、コンテナをイメージで識別します。