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
ErrorTrackingとOrchestrion
Search
sugar-cat
February 26, 2025
0
260
ErrorTrackingとOrchestrion
sugar-cat
February 26, 2025
Tweet
Share
More Decks by sugar-cat
See All by sugar-cat
DiscordとCloudflare
sugarcat7
1
280
Cloudflare Workflowsを使いたい倒したい
sugarcat7
6
1.5k
tslogで実現するセキュアなメタデータ管理とロギング
sugarcat7
4
1.3k
最近個人開発が熱い ~モニタリング強化編v0.1.0~
sugarcat7
3
420
Honoで実現するバックエンド開発のイマ
sugarcat7
23
5.5k
GoとWASI~超入門~
sugarcat7
2
240
最近個人開発が熱い ~多言語対応編~
sugarcat7
2
330
ボイラープレート自動生成ツールを使わなくなった話.pdf
sugarcat7
4
650
Using_Hono_in__B2B_SaaS_Application.pdf
sugarcat7
7
510
Featured
See All Featured
Site-Speed That Sticks
csswizardry
10
690
GitHub's CSS Performance
jonrohan
1031
460k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Cult of Friendly URLs
andyhume
79
6.5k
BBQ
matthewcrist
89
9.7k
Docker and Python
trallard
44
3.5k
Designing Experiences People Love
moore
142
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Visualization
eitanlees
146
16k
Transcript
OrchestrionとErrorTracking Japan Datadog User Group Meetup#7 LT 2025/2/26 @sugar235711
2 sugar cat(@sugar235711) 仕事: SRE(オブザーバビリティ、インフラ構築) 興味: セキュリティ、パフォーマンスチューニング @sugar235711 @sugar-cat7
3 Datadogが提供するGoのコンパイル時計装ツール 2024年末にGA Orchestrionとは
4 Datadogが提供するGoのコンパイル時計装ツール 2024年末にGA Orchestrionとは
5 Datadogが提供するGoのコンパイル時計装ツール 2024年末にGA Orchestrionとは コンパイル時に dd-trace-goで提供されているライブラリによって計装される orchestrion.ymlを見るとtemplateが書いてある
6
7 現状はdd-trace/contrib配下のライブラリ群が大部分対応している Orchestrionとは
8 • //dd:span等のアノテーションによって Tag付け/Custom Spanの生成を行う • 内部はdd-traceによる実装なので USTを使用可能 ◦ DD_SERVICEを指定しない場合は実行バイナリ名がサービス名となる
◦ 基本は自前の手動計装の実装とマージされないので重複してスパンが生成さ れないように注意 (詳しくはOrchestrion.yml) Orchestrion基本的な使い方
9 • DatadogにはAPMを使用したエラートラッキングの機能がある ◦ Spanに対してerror.type/error.message/(error.stack)のAttributeがあると自動 的に利用可能になる (最近RootSpan以外もトラッキングされるようになった ?) ErrorTrackingについて
10 • dd-trace-goのミドルウェア実装で ErrorTrackingに必要なAttributeが付与されな いものがあるので、明示的に RootSpanに対してErrorのAttributeを含める必要が ある(Panicも同様) Goの実装でErrorTracking利用する際の問題点
11 • Orchestionではコールグラフをたどって `net/http`パッケージも自動的に計装され る(そのため、 RootSpanがnet/httpのSpanになってしまう ) ◦ net/http.Server ->
chi.Router -> handler(chiの場合) OrchestrionでErrorTracking利用する際の問題点
12 • Orchestionではコールグラフをたどって `net/http`パッケージも自動的に計装され る(そのため、 RootSpanがnet/httpのSpanになってしまう ) ◦ net/http.Server ->
chi.Router -> handler(chiの場合) OrchestrionでErrorTracking利用する際の問題点 この状態であれば、 net/http.Server, chi.Routerそれぞれのサービスで ErrorTrackingを利用可能
13 • DD_SERVICEを指定すると net/http<->Routerライブラリ間のサービスオーバーラ イドが解除されてしまい、 RootSpanしかErrorTrackingに現れなくなる OrchestrionでErrorTracking利用する際の問題点
14 • DD_SERVICEを指定すると net/http<->Routerライブラリ間のサービスオーバーラ イドが解除されてしまい、 RootSpanしかErrorTrackingに現れなくなる OrchestrionでErrorTracking利用する際の問題点 この状態だと、 net/http.Server, chi.Routerが同一サービスと認識され、
同一サービス内の RootSpan(net/http)のみErrorTrackingで利用可能
15 • 現状の回避策 OrchestrionでErrorTracking利用する際の問題点 サービス名をバイナリ名を動的で指定、 Routerのデフォルトのサービス名 +Base Serviceでエラートラッキング Orchestrion側の対応を待つ ・二重トレースを防ぐために、既にトレースされている
ハンドラータイプを登録する機能を検討してくれている
16 Orchestrionでエラートラッキングも実装できる! まとめ