タダです.
Datadog の APM を試したいと思いやったことをこの記事に備忘録としてまとめます.
ローカルで APM を試す
ローカルから APM を試すことでトレーシングできるかを確認したいと思い,docker のイメージ( gcr.io/datadoghq/agent
)で提供されているエージェントを使います.以下のコマンドで起動でき,ローカルのアプリケーションを動かしてトレースできるかを確認する準備ができました.
docker run -d --cgroupns host \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /proc/:/host/proc/:ro \ -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -p 8126:8126/tcp \ -e DD_API_KEY=<DATADOG_API_KEY> \ -e DD_APM_ENABLED=true \ -e DD_SITE=datadoghq.com \ gcr.io/datadoghq/agent:latest
トレースのためのコードを埋める
トレースのためにアプリケーションのコードに専用のコードを埋め込んでいきます.Datadog のドキュメントではサポートされている言語ごとに情報がありますが,Go のサンプルコードでローカルでの確認向けコードでいじったことを以下に書きます.WithAgentAddr
でコンテナのアドレスとポートを指定し,WithServiceName
でサービス名を指定し,WithDebugMode
を有効化しているのはログ上にトレース結果を流してくれるため動作確認目的で有効化しています.
package main import ( "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer" ) func main() { tracer.Start( tracer.WithAgentAddr("localhost:8126"), tracer.WithServiceName("test-go-app"), tracer.WithDebugMode(true), ) defer tracer.Stop() // アプリケーションのロジックのコード等 }
これらの設定をしつつローカルで動作してみたらトレースができました.
まとめ
簡単ですが,Datadog APM をローカルで試したときに備忘録を書きました.ローカルアプリケーションから Datadog の docker コンテナに疎通が到達せずかなりの時間を溶かしてしまったのですが,いい経験となりました.