Slide 1

Slide 1 text

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株式会社 
 福井 崇人/ソフトウェアエンジニア 


Slide 2

Slide 2 text

2022.10
 2022.10〜 
 Retty登壇用テンプレート 
 Retty株式会社 名前なまえ 
 Copyright ©2024 Retty, Inc. 
 Copyright ©2024 Retty, Inc. 
 サービス紹介 
 2


Slide 3

Slide 3 text

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


Slide 4

Slide 4 text

2022.10
 2022.10〜 
 Retty登壇用テンプレート 
 Retty株式会社 名前なまえ 
 Copyright ©2024 Retty, Inc. 
 Copyright ©2024 Retty, Inc. 
 trace context propagationとは 
 トレース情報を分散アプリケーションのある部分から別の部分 に渡すメカニズム 
 
 4


Slide 5

Slide 5 text

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


Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

2022.10
 2022.10〜 
 Retty登壇用テンプレート 
 Retty株式会社 名前なまえ 
 Copyright ©2024 Retty, Inc. 
 Copyright ©2024 Retty, Inc. 
 Carrierとは 
 SpanContextを保持する 
 HTTPの場合のheader, gRPCの場合のMetadata 
 8


Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

2022.10
 2022.10〜 
 Retty登壇用テンプレート 
 Retty株式会社 名前なまえ 
 Copyright ©2024 Retty, Inc. 
 Copyright ©2024 Retty, Inc. 
 14
 Amazon SQSでもtrace context propagationは可能 
 (やる意義は別として)


Slide 15

Slide 15 text

2022.10
 2022.10〜 
 Retty登壇用テンプレート 
 Retty株式会社 名前なまえ 
 Copyright ©2024 Retty, Inc. 
 Thank you! 
 Copyright ©2024 Retty, Inc. 
 ありがとうございました!