Docker Daemon

Docker Daemon

Agent Check Agentチェック

Linux Mac OS OS Supported

: Docker Daemon チェックのメンテナンスは継続されていますが、Agent v5 でのみ動作します。

Agent v6 で Docker インテグレーションを使用するには、下の Agent v6 セクションを参照してください。

Docker のデフォルトのダッシュボード

概要

この Agent チェックを構成して Docker_daemon サービスからリアルタイムにメトリクスを取得することで、以下のことが可能です。

  • Docker_daemon の状態を視覚化および監視できます。
  • Docker_daemon のフェイルオーバーとイベントの通知を受けることができます。

セットアップ

インストール

すべてのコンテナに関する Docker メトリクスを収集するには、ホストごとに 1 つの Datadog Agent を実行します。各ホストで直接 Agent を実行する方法と、1 つの docker-dd-agent コンテナ内で実行する方法 (推奨) の 2 つがあります。

どちらのオプションでも、Docker チェックが成功するには、ホストで cgroup メモリ管理が有効になっている必要があります。これを有効にする方法については、docker-dd-agent リポジトリを参照してください。

ホストのインストール

  1. ホストで Docker が実行されていることを確認します。
  2. ホスト OS に対応する Agent のインストール手順に従って、Agent をインストールします。
  3. アプリケーションで Docker インテグレーションタイルを有効にします。
  4. usermod -a -G docker dd-agent を使用して、Docker グループに Agent ユーザーを追加します。
  5. Agent の conf.d ディレクトリにあるサンプルファイルをコピーして、docker_daemon.yaml ファイルを作成します。ホストの Docker が標準インストールの場合は、何も変更しなくてもインテグレーションは動作します。
  6. その他のインテグレーションを有効にするには、docker ps を使用して、対応するアプリケーションが使用するポートを識別します。 Docker ps コマンド

コンテナのインストール

  1. ホストで Docker が実行されていることを確認します。

  2. Docker コンテナのインストール手順に従って、以下を実行します。

     docker run -d --name dd-agent \
       -v /var/run/docker.sock:/var/run/docker.sock:ro \
       -v /proc/:/host/proc/:ro \
       -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
       -e API_KEY={YOUR_DD_API_KEY} \
       datadog/docker-dd-agent:latest
    

上のコマンドで、Docker の -e 環境変数フラグを使用して、Datadog Agent に API キーを渡すことができます。そのほかに以下の変数があります。

変数説明
API_KEYDatadog API キーを設定します。
DD_HOSTNAMEAgent コンテナの datadog.conf ファイル内にホスト名を設定します。この変数が設定されない場合、Agent コンテナは、デフォルトで (docker info コマンドで報告される) Name フィールドを Agent コンテナホスト名として使用します。
DD_URLAgent がデータを送信する Datadog インテークサーバー URL を設定します。これは、Agent をプロキシとして使用する際に役立ちます。
LOG_LEVELログの詳細度を設定します (CRITICAL、ERROR、WARNING、INFO、DEBUG)。たとえば、-e LOG_LEVEL=DEBUG は、ログをデバッグモードに設定します。
TAGSホストタグをカンマ区切りの文字列として設定します。-e TAGS="simple-tag, tag-key:tag-value" のように、シンプルなタグとキー/値形式のタグの両方を使用できます。
EC2_TAGSこの機能を有効にすると、Agent はスタートアップ時に EC2 API を使用して設定されたカスタムタグを問い合わせたり、キャプチャしたりすることができます。有効にするには、-e EC2_TAGS=yes を使用します。この機能には、インスタンスに関連付けられた IAM ロールが必要です。
NON_LOCAL_TRAFFICこの機能を有効にすると、外部の IP から報告する StatsD が許可されます。有効にするには、-e NON_LOCAL_TRAFFIC=yes を使用します。これは、別のコンテナまたはシステムからメトリクスを報告するために使用されます。詳細については、ネットワーク構成を参照してください。
PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASSWORDプロキシ構成の詳細を設定します。: 認証パスワードを渡すには PROXY_PASSWORD が必要です。名前の変更はできません。詳細については、Agent プロキシに関するドキュメントを参照してください。
SD_BACKEND, SD_CONFIG_BACKEND, SD_BACKEND_HOST, SD_BACKEND_PORT, SD_TEMPLATE_DIR, SD_CONSUL_TOKENオートディスカバリーを有効化および構成します。詳細については、オートディスカバリーのガイドを参照してください。

: Agent に再起動に対する耐性を持たせるには、--restart=unless-stopped を追加します。

Agent コンテナを Amazon Linux で実行

Datadog Agent コンテナを Amazon Linux で実行するには、cgroup ボリュームマウントロケーションに以下の変更を行います。

docker run -d --name dd-agent \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro \
  -v /cgroup/:/host/sys/fs/cgroup:ro \
  -e API_KEY={YOUR API KEY} \
  datadog/docker-dd-agent:latest

Alpine Linux ベースのコンテナ

標準の Docker イメージは Debian Linux に基づいていますが、Datadog Agent v5.7 では Alpine Linux ベースのイメージがあります。Alpine Linux イメージは、従来の Debian ベースのイメージに比べてサイズが大幅に小さくなっています。また、Alpine のセキュリティ指向の設計も継承しています。

Alpine Linux イメージを使用するには、バージョンタグに -alpine を追加します。たとえば、以下のとおりです。

docker run -d --name dd-agent \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro \
  -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
  -e API_KEY={YOUR API KEY} \
  datadog/docker-dd-agent:latest-alpine

イメージのバージョン管理

Datadog Agent のバージョン 5.5.0 から、Docker イメージのバージョンパターンが新しくなりました。これにより、Agent のバージョンは同じまま、Datadog Agent の Docker イメージに対する変更をリリースできるようになりました。

Docker イメージバージョンは、X.Y.Z というパターンです。ここで、X は Docker イメージのメジャーバージョン、Y はマイナーバージョン、Z は Agent のバージョンを表します。

たとえば、Datadog Agent 5.5.0 をバンドルした Docker イメージの最初のバージョンは 10.0.550 です。

カスタムコンテナと追加情報

Datadog Agent を使用したカスタム Docker コンテナの構築、Alpine Linux ベースのイメージ、バージョン管理などについては、Github の docker-dd-agent プロジェクトを参照してください。

検証

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

Agent v6

最新の Docker チェックの名前は docker です。これは、新しい内部アーキテクチャを利用するために Go で記述されています。バージョン 6.0 以降の Agent は、docker_daemon チェックをロードしなくなります。ただし、Agent v5 では引き続き使用でき、メンテナンスも継続されます。以下の非推奨の機能以外のすべての機能は、バージョン >6.0 に移植されます。

  • urlapi_version、および tags* オプションは非推奨です。標準の Docker 環境変数を直接使用することをお勧めします。
  • ecs_tagsperformance_tags、および container_tags オプションは非推奨です。関連するタグはそれぞれデフォルトで収集されるようになりました。
  • docker.container.count メトリクスを有効にする collect_container_count オプションはサポートされません。docker.containers.running.stopped を使用してください。

一部のオプションは docker_daemon.yaml からメインの datadog.yaml に移動しました。

  • collect_labels_as_tagsdocker_labels_as_tags という名前に変更され、カーディナリティの高いタグをサポートします。詳細は、datadog.yaml.example を参照してください。
  • exclude リストと include リストは、ac_includeac_exclude という名前に変更されました。Agent のすべてのコンポーネントで一貫性のある絞り込みを行うために、任意のタグの絞り込みは削除されました。サポートされる絞り込みタグは、image (イメージ名) と name (コンテナ名) だけです。正規表現絞り込みは引き続き使用できます。例については、datadog.yaml.example を参照してください。
  • docker_root オプションは、container_cgroup_rootcontainer_proc_root の 2 つのオプションに分割されました。
  • Kubernetes と Openshift で一時停止中のコンテナを除外する exclude_pause_container が追加されました (デフォルトは true)。これは、それらが誤って除外リストから漏れることを防ぎます。

その他の変更

import コマンドは、古い docker_daemon.yaml を新しい docker.yaml に変換します。また、このコマンドは、必要な設定を docker_daemon.yaml から datadog.yaml に移動します。

収集データ

メトリクス

docker.cpu.system
(gauge)
The percent of time the CPU is executing system calls on behalf of processes of this container, unnormalized
Shown as percent
docker.cpu.system.95percentile
(gauge)
95th percentile of docker.cpu.system
Shown as percent
docker.cpu.system.avg
(gauge)
Average value of docker.cpu.system
Shown as percent
docker.cpu.system.count
(rate)
The rate that the value of docker.cpu.system was sampled
Shown as sample
docker.cpu.system.max
(gauge)
Max value of docker.cpu.system
Shown as percent
docker.cpu.system.median
(gauge)
Median value of docker.cpu.system
Shown as percent
docker.cpu.user
(gauge)
The percent of time the CPU is under direct control of processes of this container, unnormalized
Shown as percent
docker.cpu.user.95percentile
(gauge)
95th percentile of docker.cpu.user
Shown as percent
docker.cpu.user.avg
(gauge)
Average value of docker.cpu.user
Shown as percent
docker.cpu.user.count
(rate)
The rate that the value of docker.cpu.user was sampled
Shown as sample
docker.cpu.user.max
(gauge)
Max value of docker.cpu.user
Shown as percent
docker.cpu.user.median
(gauge)
Median value of docker.cpu.user
Shown as percent
docker.cpu.usage
(gauge)
The percent of CPU time obtained by this container
Shown as percent
docker.cpu.throttled
(gauge)
Number of times the cgroup has been throttled
docker.cpu.shares
(gauge)
Shares of CPU usage allocated to the container
docker.kmem.usage
(gauge)
The amount of kernel memory that belongs to the container's processes.
Shown as byte
docker.mem.cache
(gauge)
The amount of memory that is being used to cache data from disk (e.g. memory contents that can be associated precisely with a block on a block device)
Shown as byte
docker.mem.cache.95percentile
(gauge)
95th percentile value of docker.mem.cache
Shown as byte
docker.mem.cache.avg
(gauge)
Average value of docker.mem.cache
Shown as byte
docker.mem.cache.count
(rate)
The rate that the value of docker.mem.cache was sampled
Shown as sample
docker.mem.cache.max
(gauge)
Max value of docker.mem.cache
Shown as byte
docker.mem.cache.median
(gauge)
Median value of docker.mem.cache
Shown as byte
docker.mem.rss
(gauge)
The amount of non-cache memory that belongs to the container's processes. Used for stacks, heaps, etc.
Shown as byte
docker.mem.rss.95percentile
(gauge)
95th percentile value of docker.mem.rss
Shown as byte
docker.mem.rss.avg
(gauge)
Average value of docker.mem.rss
Shown as byte
docker.mem.rss.count
(rate)
The rate that the value of docker.mem.rss was sampled
Shown as sample
docker.mem.rss.max
(gauge)
Max value of docker.mem.rss
Shown as byte
docker.mem.rss.median
(gauge)
Median value of docker.mem.rss
Shown as byte
docker.mem.swap
(gauge)
The amount of swap currently used by the container
Shown as byte
docker.mem.swap.95percentile
(gauge)
95th percentile value of docker.mem.swap
Shown as byte
docker.mem.swap.avg
(gauge)
Average value of docker.mem.swap
Shown as byte
docker.mem.swap.count
(rate)
The rate that the value of docker.mem.swap was sampled
Shown as sample
docker.mem.swap.max
(gauge)
Max value of docker.mem.swap
Shown as byte
docker.mem.swap.median
(gauge)
Median value of docker.mem.swap
Shown as byte
docker.container.open_fds
(gauge)
The number of open file descriptors
Shown as file
docker.container.size_rw
(gauge)
Total size of all the files in the container which have been created or changed by processes running in the container
Shown as byte
docker.container.size_rw.95percentile
(gauge)
95th percentile of docker.container.size_rw
Shown as byte
docker.container.size_rw.avg
(gauge)
Average value of docker.container.size_rw
Shown as byte
docker.container.size_rw.count
(rate)
The rate that the value of docker.container.size_rw was sampled
Shown as sample
docker.container.size_rw.max
(gauge)
Max value of docker.container.size_rw
Shown as byte
docker.container.size_rw.median
(gauge)
Median value of docker.container.size_rw
Shown as byte
docker.container.size_rootfs
(gauge)
Total size of all the files in the container
Shown as byte
docker.container.size_rootfs.95percentile
(gauge)
95th percentile of docker.container.size_rootfs
Shown as byte
docker.container.size_rootfs.avg
(gauge)
Average value of docker.container.size_rootfs
Shown as byte
docker.container.size_rootfs.count
(rate)
The rate that the value of docker.container.size_rw was sampled
Shown as sample
docker.container.size_rootfs.max
(gauge)
Max value of docker.container.size_rootfs
Shown as byte
docker.container.size_rootfs.median
(gauge)
Median value of docker.container.size_rootfs
Shown as byte
docker.containers.running
(gauge)
The number of containers running on this host tagged by image
docker.containers.stopped
(gauge)
The number of containers stopped on this host tagged by image
docker.containers.running.total
(gauge)
The total number of containers running on this host
docker.containers.stopped.total
(gauge)
The total number of containers stopped on this host
docker.images.available
(gauge)
The number of top-level images
docker.images.intermediate
(gauge)
The number of intermediate images, which are intermediate layers that make up other images
docker.mem.limit
(gauge)
The memory limit for the container, if set
Shown as byte
docker.mem.limit.95percentile
(gauge)
95th percentile of docker.mem.limit. Ordinarily this value will not change
Shown as byte
docker.mem.limit.avg
(gauge)
Average value of docker.mem.limit. Ordinarily this value will not change
Shown as byte
docker.mem.limit.count
(rate)
The rate that the value of docker.mem.limit was sampled
Shown as sample
docker.mem.limit.max
(gauge)
Max value of docker.mem.limit. Ordinarily this value will not change
Shown as byte
docker.mem.limit.median
(gauge)
Median value of docker.mem.limit. Ordinarily this value will not change
Shown as byte
docker.mem.sw_limit
(gauge)
The swap + memory limit for the container, if set
Shown as byte
docker.mem.sw_limit.95percentile
(gauge)
95th percentile of docker.mem.sw_limit. Ordinarily this value will not change
Shown as byte
docker.mem.sw_limit.avg
(gauge)
Average value of docker.mem.sw_limit. Ordinarily this value will not change
Shown as byte
docker.mem.sw_limit.count
(rate)
The rate that the value of docker.mem.sw_limit was sampled
Shown as sample
docker.mem.sw_limit.max
(gauge)
Max value of docker.mem.sw_limit. Ordinarily this value will not change
Shown as byte
docker.mem.sw_limit.median
(gauge)
Median value of docker.mem.sw_limit. Ordinarily this value will not change
Shown as byte
docker.mem.soft_limit
(gauge)
The memory reservation limit for the container, if set
Shown as byte
docker.mem.soft_limit.95percentile
(gauge)
95th percentile of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.soft_limit.avg
(gauge)
Average value of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.soft_limit.count
(rate)
The rate that the value of docker.mem.soft_limit was sampled
Shown as sample
docker.mem.soft_limit.max
(gauge)
Max value of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.soft_limit.median
(gauge)
Median value of docker.mem.soft_limit. Ordinarily this value will not change
Shown as byte
docker.mem.in_use
(gauge)
The fraction of used memory to available memory, IF THE LIMIT IS SET
Shown as fraction
docker.mem.in_use.95percentile
(gauge)
95th percentile of docker.mem.in_use
Shown as fraction
docker.mem.in_use.avg
(gauge)
Average value of docker.mem.in_use
Shown as fraction
docker.mem.in_use.count
(rate)
The rate that the value of docker.mem.in_use was sampled
Shown as sample
docker.mem.in_use.max
(gauge)
Max value of docker.container.mem.in_use
Shown as fraction
docker.mem.in_use.median
(gauge)
Median value of docker.container.mem.in_use
Shown as fraction
docker.mem.sw_in_use
(gauge)
The fraction of used swap + memory to available swap + memory, if the limit is set
Shown as fraction
docker.mem.sw_in_use.95percentile
(gauge)
95th percentile of docker.mem.sw_in_use
Shown as fraction
docker.mem.sw_in_use.avg
(gauge)
Average value of docker.mem.sw_in_use
Shown as fraction
docker.mem.sw_in_use.count
(rate)
The rate that the value of docker.mem.sw_in_use was sampled
Shown as sample
docker.mem.sw_in_use.max
(gauge)
Max value of docker.container.mem.sw_in_use
Shown as fraction
docker.mem.sw_in_use.median
(gauge)
Median value of docker.container.mem.sw_in_use
Shown as fraction
docker.io.read_bytes
(gauge)
Bytes read per second from disk by the processes of the container
Shown as byte
docker.io.read_bytes.95percentile
(gauge)
95th percentile of docker.io.read_bytes
Shown as byte
docker.io.read_bytes.avg
(gauge)
Average value of docker.io.read_bytes
Shown as byte
docker.io.read_bytes.count
(rate)
The rate that the value of docker.io.read_bytes was sampled
Shown as sample
docker.io.read_bytes.max
(gauge)
Max value of docker.container.io.read_bytes
Shown as byte
docker.io.read_bytes.median
(gauge)
Median value of docker.container.io.read_bytes
Shown as byte
docker.io.write_bytes
(gauge)
Bytes written per second to disk by the processes of the container
Shown as byte
docker.io.write_bytes.95percentile
(gauge)
95th percentile of docker.io.write_bytes
Shown as byte
docker.io.write_bytes.avg
(gauge)
Average value of docker.io.write_bytes
Shown as byte
docker.io.write_bytes.count
(rate)
The rate that the value of docker.io.write_bytes was sampled
Shown as sample
docker.io.write_bytes.max
(gauge)
Max value of docker.container.io.write_bytes
Shown as byte
docker.io.write_bytes.median
(gauge)
Median value of docker.container.io.write_bytes
Shown as byte
docker.image.virtual_size
(gauge)
Size of all layers of the image on disk
Shown as byte
docker.image.size
(gauge)
Size of all layers of the image on disk
Shown as byte
docker.net.bytes_rcvd
(gauge)
Bytes received per second from the network
Shown as byte
docker.net.bytes_rcvd.95percentile
(gauge)
95th percentile of docker.net.bytes_rcvd
Shown as byte
docker.net.bytes_rcvd.avg
(gauge)
Average value of docker.net.bytes_rcvd
Shown as byte
docker.net.bytes_rcvd.count
(rate)
The rate that the value of docker.net.bytes_rcvd was sampled
Shown as sample
docker.net.bytes_rcvd.max
(gauge)
Max value of docker.container.net.bytes_rcvd
Shown as byte
docker.net.bytes_rcvd.median
(gauge)
Median value of docker.container.net.bytes_rcvd
Shown as byte
docker.net.bytes_sent
(gauge)
Bytes sent per second to the network
Shown as byte
docker.net.bytes_sent_bytes.95percentile
(gauge)
95th percentile of docker.net.bytes_sent_bytes
Shown as byte
docker.net.bytes_sent_bytes.avg
(gauge)
Average value of docker.net.bytes_sent_bytes
Shown as byte
docker.net.bytes_sent_bytes.count
(rate)
The rate that the value of docker.net.bytes_sent_bytes was sampled
Shown as sample
docker.net.bytes_sent_bytes.max
(gauge)
Max value of docker.container.net.bytes_sent_bytes
Shown as byte
docker.net.bytes_sent_bytes.median
(gauge)
Median value of docker.container.net.bytes_sent_bytes
Shown as byte
docker.data.used
(gauge)
Storage pool disk space used
Shown as byte
docker.data.free
(gauge)
Storage pool disk space free
Shown as byte
docker.data.total
(gauge)
Storage pool disk space total
Shown as byte
docker.data.percent
(gauge)
The percent of storage pool used
Shown as percent
docker.metadata.used
(gauge)
Storage pool metadata space used
Shown as byte
docker.metadata.free
(gauge)
Storage pool metadata space free
Shown as byte
docker.metadata.total
(gauge)
Storage pool metadata space total
Shown as byte
docker.metadata.percent
(gauge)
The percent of storage pool metadata used
Shown as percent
docker.thread.count
(gauge)
Current thread count for the container
Shown as thread
docker.thread.limit
(gauge)
Thread count limit for the container, if set
Shown as thread

イベント

Docker インテグレーションは以下のイベントを生成します。

  • Delete Image
  • Die
  • エラー
  • Fail
  • Kill
  • Out of memory (oom)
  • Pause
  • Restart container
  • Restart Daemon
  • Update

サービスのチェック

docker.service_up: Agent が Docker デーモンからコンテナのリストを収集できない場合は、CRITICAL を返します。それ以外の場合は、OK を返します。

docker.container_health: このサービスチェックは、Agent v5 でのみ使用できます。コンテナが正常でない場合は CRITICAL、健全性が不明な場合は UNKNOWN、それ以外の場合は OK を返します。

docker.exit: コンテナが 0 以外の終了コードで終了した場合は、CRITICAL を返します。それ以外の場合は、OK を返します。

: docker.exit を使用するには、Docker YAML ファイルcollect_exit_code: true を追加し、Agent を再起動します。

トラブルシューティング

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

その他の参考資料