Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
dd-trace-goのtrace context propagation実装
Search
Takato Fukui
November 20, 2024
0
450
dd-trace-goのtrace context propagation実装
GoのDatadog クライアントライブラリ DataDog/dd-trace-go のAPM機能が、どのように分散アプリケーション間でのspan紐付けを実装してるかについて
Takato Fukui
November 20, 2024
Tweet
Share
More Decks by Takato Fukui
See All by Takato Fukui
エンジニアリングの良い塩梅🧂🌸
takatofukui
0
25
ソフトウェアテスト
takatofukui
0
64
なぜコードを書いてはいけないか
takatofukui
0
100
リファクタリング
takatofukui
0
120
本番分析データベースを丸ごと削除した人の顔
takatofukui
0
100
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
49
14k
Scaling GitHub
holman
462
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.6k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Done Done
chrislema
185
16k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Transcript
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. dd-trace-goの trace context propagation実装 Japan Datadog User Group Meetup#6 2024/11/20 Retty株式会社 福井 崇人/ソフトウェアエンジニア
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. サービス紹介 2
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. DataDog/dd-trace-go APM含むGoのDatadog クライアントライブラリ https://github.com/DataDog/dd-trace-go 以降ではv1.69.1, デフォルト設定を前提とする 3
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. trace context propagationとは トレース情報を分散アプリケーションのある部分から別の部分 に渡すメカニズム 4
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. trace context propagationをどう実現してるか 子spanを作るために必要な情報であるSpanContextを HTTPの場合はヘッダーに載せる gRPCの場合はMetadataに載せる (dd-trace-go.v1/contrib/google.golang.org/grpcの場 合) 5
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. 概念図/HTTP 6 Propagator HTTPHeadersCarrier Set ForeachKey http.Header spanContext traceId: XXX … x-datadog-trace-id: XXX … http.Header x-datadog-trace-id: YYY … spanContext traceId: YYY … Inject Extract
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. 概念図/gRPC 7 Propagator MDCarrier Set ForeachKey metadata.MD spanContext traceId: XXX … x-datadog-trace-id: XXX … metadata.MD x-datadog-trace-id: YYY … spanContext traceId: YYY … Inject Extract
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. Carrierとは SpanContextを保持する HTTPの場合のheader, gRPCの場合のMetadata 8
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. Carrierとは 9 https://github.com/DataDog/dd-trace-go/blob/v1.69.1/d dtrace/tracer/textmap.go
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. Propagatorとは SpanContextをCarrierにInjectしたり、Carrierから SpanContextにExtractするInterface 10 https://github.com/DataDog/dd-trace-go/blob/v1.69.1/ddtrace/tracer/propagator.go
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. 実際にHTTPヘッダーに載せてるコード 11 https://github.com/DataDog/dd-trace-go/blob/v1.69.1/ddtrace/tracer/textmap.go “x-datadog-trace-id” “x-datadog-parent-id” HTTPHeadersCarrier
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. 実際にHTTPヘッダーから抽出してるコード 12 https://github.com/DataDogdd/-trace-go/blob/v1.69.1/ddtrace/tracer/textmap.go “x-datadog-parent-id” HTTPHeadersCarrier
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. trace context propagationの流れ 13 server1 HTTP client(dd-trace-go.v1/contrib/net/http) span SpanContext HTTPHeadersCarrier Propagator.Inject http.Header server2 HTTP server(dd-trace-go.v1/contrib/net/http) http.Header HTTPHeadersCarrier Propagator.Extract SpanContext span HTTP request
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Copyright ©2024 Retty, Inc. 14 Amazon SQSでもtrace context propagationは可能 (やる意義は別として)
2022.10 2022.10〜 Retty登壇用テンプレート Retty株式会社 名前なまえ Copyright ©2024 Retty,
Inc. Thank you! Copyright ©2024 Retty, Inc. ありがとうございました!