DatadogでDocker Integrationを有効化する方法

概要

はじめに

  • 今回は、DatadogのDocker Integrationを有効化する方法をご紹介します。
  • Datadog の概要は、下記のログミーTechで公開されている服部さんの記事を参照ください。
 

Datadogで実現するDockerの監視

  • DatadogのIntegrationを利用して、Dockerデーモンおよびコンテナの死活監視が可能です。Datadogのドキュメントは、以下を参照。
  • Dockerの場合は “docker.d” のconf を使用します。

Docker Integrationのインストール

  • 先ず、Integrations → Integrations にて、Availableの一覧から「Docker」を選択して、「Install」を押します。
  • Integrationをインストールしただけでは、「No data received」となり、まだ監視対象のサーバーから情報を取得できていません。
 
  • DockerのIntegrationには、下記の説明があります。dd-agentユーザーの設定変更、conf.yamlの作成が必要となる様ですね。
1. Make sure that Docker is installed and running on your server
2. Add the user running the Agent to docker’s group.
usermod -a -G docker dd-agent
3. Configure the Agent to connect to Docker
Edit conf.d/docker.d/docker_daemon.yaml
init_config:
instances:
    – url: “unix://var/run/docker.sock”
      new_tag_names: true
4. Restart the Agent
5. Execute the Agent status command and verify that the integration check has passed. Look for docker under the Checks section.
 
 
  • 以下は実際のIntegrationの説明画面です。
 

dd-agentユーザーの設定変更

  • idコマンドを実行し、dd-agentユーザーの所属するグループを確認します。現在プライマリグループにdd-agentのみ所属しています。
  • usermodコマンドを使用して、dd-agentユーザーのセカンダリグループを設定します。
  • /etc/group, idコマンドより、セカンダリグループが追加されていることを確認します。

$ id -a dd-agent
uid=498(dd-agent) gid=496(dd-agent) groups=496(dd-agent)
$ grep docker /etc/group
docker:x:497:

$ sudo usermod -a -G docker dd-agent

$ grep docker /etc/group
docker:x:497:dd-agent
$ id -a dd-agent
uid=498(dd-agent) gid=496(dd-agent) groups=496(dd-agent),497(docker)
 

conf.yamlを作成する

  • conf.yamlを作成します。以下に、サンプルを記載します。

init_config:

instances:
    - url: "unix://var/run/docker.sock"
      new_tag_names: true
 

conf.yamlを配置する

  • conf.yaml を/etc/datadog-agent/conf.d/docker.d配下に配置します。
  • datadog-agent.serviceを再起動します。

$ cd /etc/datadog-agent/conf.d/docker.d
$ sudo vi conf.yaml

$ sudo systemctl restart datadog-agent.service
 

Datadogでmonitor を作成する

  • monitor typeに「Metric」を選択し、monitorを作成します。
  • メトリクスの候補から「docker.service_up」、「docker.container_health」を選択します。
  • 以下、メトリクスの説明です。
    • docker.service_up: Agent が Docker デーモンからコンテナのリストを収集できない場合は、CRITICAL を返します。それ以外の場合は、OK を返します。
    • docker.container_health: このサービスチェックは、Agent v5 でのみ使用できます。コンテナが正常でない場合は CRITICAL、健全性が不明な場合は UNKNOWN、それ以外の場合は OK を返します。
    • docker.exit: コンテナが 0 以外の終了コードで終了した場合は、CRITICAL を返します。それ以外の場合は、OK を返します。