LoginSignup
12
3

More than 5 years have passed since last update.

Dockerコンテナ上のDatadogからコンテナ上のRoR(rails)をAPMする

Posted at

概要

  • DockerコンテナをDatadogのコンテナから監視する <- 記事があった
  • DatadogでAPMを使う <- 記事があった
  • Dockerコンテナ上のDatadogからコンテナ上のサービスをAPMで見る <- なかった

ので書き残してみる。公式ドキュメント以上のことは書いてないので、もうできちゃったよ! って人の場合は、特に追加の知見はないかと思います。

やること

  1. Dockerコンテナ上のDatadogから監視する
  2. そこからさらにAPMでサービスを見る

Dockerコンテナ上のDatadogから監視する

これについては日本語でも解説記事が結構あったので、大まかに。

基本はホストマシンで見るのと変わらなく、ホストマシン上で見ていたところを、Datadogコンテナから見れれば良い(多分)。

以下のようなdocker-compose.ymlを書く。

docker-compose.yml
  guest:
    build:
###### 省略 #####
    links:
     - datadog:datadog
  datadog:
    image: datadog/docker-dd-agent
    environment:
     - API_KEY=xxxyourxapixkeyxxx
     - SD_BACKEND=docker
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock:ro
     - /proc/:/host/proc/:ro
     - /sys/fs/cgroup:/host/sys/fs/cgroup:ro

docker.sockやproc、cgroupが見れればいいっぽい。docker上のファイルパスは、設定ファイルを修正することによって変えられるが、特に修正する理由もないのでデフォルトのまま。

これだけでコンテナの監視は行える(はず)。

APMをつかう

guest上にRoR(以下rails)のサービスが乗っかっている前提。

まずはdocker-compose.ymlに追記。

docker-compose.yml
  guest:
    build:
###### 省略 #####
    links:
     - datadog:datadog
  datadog:
    image: datadog/docker-dd-agent
    environment:
     - API_KEY=xxxyourxapixkeyxxx
     - DD_APM_ENABLED=true
     - SD_BACKEND=docker
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock:ro
     - /proc/:/host/proc/:ro
     - /sys/fs/cgroup:/host/sys/fs/cgroup:ro 

名称の通りだが、DD_APM_ENABLEDをtrueにすることでapmが有効化される(特に何かを追加でインストールする必要はない)。

次にguestのrailsのGemfileにddtraceを追加してbundle install。

gem 'ddtrace'

次にddtraceのコンフィグファイルを追加する。

config/initializers/datadog-tracer.rb
Datadog.configure do |c|
  c.use :rails, service_name: 'my-rails-app'
  c.tracer hostname: 'datadog',
           port: 8126
end

ここでのhostnameはdockerのバーチャルネットワーク上での名前を指定すればいい。ポートもデフォルトから変えていないのなら8126でよい。

上記で基本的な設定は以上。これでAPMが利用可能になるはずです。

Enjoy!

参考

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3