【要約】Datadog APM で Python アプリを計装するために必要なこと【Docker 編】 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
APM導入時に直面する技術的課題は以下の通り。
- ・コンポーネント間の役割分担の不明確さ。
- ・トラブル発生時の原因切り分けの困難さ。
- ・Docker環境におけるコンテナ間通信の設定ミス。
- ・トレース、ログ、メトリクスが紐付かない断片的な観測状態。
// Approach
以下の4ステップで計装を実現する。
1.Agent側の設定
- ・
DD_APM_ENABLED="true"でAPMを有効化。 - ・
DD_APM_NON_LOCAL_TRAFFIC="true"で他コンテナからの通信を許可。
2.ライブラリ側の計装
- ・
pip install ddtraceを実行。 - ・
ddtrace-runコマンドでアプリを起動し、Monkey Patchingによる自動計装を実施。
3.Docker環境の接続設定
- ・
DD_AGENT_HOSTにAgentのサービス名を指定。 - ・
DD_TRACE_AGENT_PORT="8126"を設定。
4.Unified Service Taggingの実装
- ・
DD_SERVICE,DD_ENV,DD_VERSIONの3つの環境変数を設定。
// Result
- ・コード変更を最小限に抑えた自動計装を実現。
- ・Unified Service Taggingにより、トレースからログやメトリクスへのシームレスな遷移が可能。
- ・コンポーネントの構造理解により、トラブルシューティングの迅速化が期待できる。
Senior Engineer Insight
> Monkey Patchingによる自動計装は、開発体験(DX)を劇的に向上させる。一方で、ライブラリの挙動に依存するため、副作用への警戒は必要だ。Docker環境では、
DD_AGENT_HOSTとDD_APM_NON_LOCAL_TRAFFICの設定ミスが、導入時の典型的なハマりポイントとなる。大規模な分散システムを運用する場合、Unified Service Taggingの徹底は必須である。これがないと、観測データの相関分析は不可能になる。設計段階からタグ付けの規約をチーム内で定義すべきだ。