😇

Docker上で起動しているWebアプリのSupervisorをDatadogで監視する

1 min read

結論

/var/run/supervisor.sockをVolumeマウントして、
WebアプリコンテナとDatadogAgentコンテナ間で/var/run/supervisor.sockを使用できるようにする。

経緯

DatadogによるSupervisor チェックによると

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

[unix_http_server]
file=/var/run/supervisor.sock
chmod=777
chown=nobody:nogroup

こちらの設定だけで、DatadogでSupervisorが監視できるとのこと。

だが、Connection refuseされまくる。。。
そもそもDatadogAgentで、unix:///var/run/supervisor.sockに接続できないっぽい。。。

結論にも書いてある通りですが、
/var/run/supervisor.sockを、DatadogAgentコンテナにだけ記述しても、そんなものはDatadogAgentコンテナには存在しない。ここに気づくまでだいぶ時間飛ばしました。

対応策

/var/run/supervisor.sockをVolumeマウントして、
WebアプリコンテナとDatadogAgentコンテナ間で/var/run/supervisor.sockを使用できるようにする。

具体例

supervisorsocketという名称のVolumeマウント作成し、
WebアプリコンテナとDatadogAgentコンテナ間で/var/run/supervisor.sockを使用できるようにする。

version: '3'
services:

  # Webアプリコンテナ
  app:
    build:
    .
    .
    .
    volumes:
      - supervisorsocket:/var/run

  # DatadogAgentコンテナ
  dd-agent:
    image: datadog/agent:7
    .
    .
    .
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - supervisorsocket:/var/run
    .
    .
    .

#Volumes
volumes:
  supervisorsocket:
    driver: local

参考

Datadog公式ドキュメント