1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

datadogコンテナをローカルで動かす(& Rails api)

Posted at

下記記事の補足という形の記事になります。datadogをrails + fargate環境にデプロイするのが最終目的です。

いきなりfargateデプロイも悪くはないかもですが、やっぱりローカルで試せるなら試した方が、これはいけるなという感覚と共にデプロイもできると思います。個人的には。

というわけで、docker composeを利用し、rails と datadogをdockerコンテナで動かす手順です。

実装

1. railsの設定修正

最初に、rails側にdatadog gemを追加 & 設定を追加します。
こちらを参考に、gemのインストールおよびdatadog configの設定ファイルを追加してください。

そして、configを少し変えます。hostの設定です。
※fargateデプロイ時は削除してください。

config/initializers/datadog-tracer.rb
Datadog.configure do |c|
  c.env = ENV["DD_ENV"] # 動的な変数は.envやdocker composeに設定するか、'local'などのハードコーディングで良いと思います。
  c.service = ENV["DD_SERVICE"]
  c.tracing.sampling.default_rate = (ENV["DD_TRACE_SAMPLE_RATE"] || 1.0).to_f
  c.tracing.instrument(:rails, service_name: ENV["DD_SERVICE"])
  c.appsec.enabled = true
  c.agent.host = "datadog-agent" # 追加:ホストをdatadog-agentに設定
end

2. docker composeにdatadog agent追加

docker-compose.ymlservices
  api: # railsの設定をしている箇所としてみてください
  ~~
    # もしdockerFileがprd向けのみの場合、envを上書き
    environment:
      RAILS_ENV: 'development'
      BUNDLE_WITHOUT: ''
    # env等を上書きする場合、各種インストールを再実行する
    command: >
      bash -c "rm -f tmp/pids/server.pid && 
      apt-get update && 
      apt-get install -y build-essential && 
      bundle install && 
      bundle exec rails db:migrate && 
      bundle exec rails s -b 0.0.0.0 -p 4000" # ポートなどは実際の開発環境に合わせてください
 # datadog-agentを追加
  datadog-agent:
    profiles: ["datadog"] # 指定した時のみにしたい場合、profile設定をしておく
    image: public.ecr.aws/datadog/agent:latest 
    environment:
      - DD_API_KEY=<keyを設定してください>
      - DD_APM_ENABLED=true
      - DD_LOGS_ENABLED=true
      - DD_APM_NON_LOCAL_TRAFFIC=true
      - DD_SITE=datadoghq.com
      - DD_APM_RECEIVER_PORT=8126
      - DD_SERVICE=<任意のサービス名>
      - DD_ENV=<任意のenvlocalなど>
      - DD_TRACE_SAMPLE_RATE=0.5
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /proc/:/host/proc/:ro
      - /sys/fs/cgroup:/host/sys/fs/cgroup:ro
    ports:
      - 8126:8126

apiキーなどは実際の値に置き換えてください。
datadogコンソールで確認できます。
※githubなどの履歴には入れないようご注意ください。

以上で、ローカルのコンテナ環境でrailsのログがdatadog agentに渡され、datadogに送られることが確認できるはずです。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?