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
180
ErrorTrackingとOrchestrion
sugar-cat
February 26, 2025
Tweet
Share
More Decks by sugar-cat
See All by sugar-cat
DiscordとCloudflare
sugarcat7
1
170
Cloudflare Workflowsを使いたい倒したい
sugarcat7
6
1.3k
tslogで実現するセキュアなメタデータ管理とロギング
sugarcat7
4
1.1k
最近個人開発が熱い ~モニタリング強化編v0.1.0~
sugarcat7
3
360
Honoで実現するバックエンド開発のイマ
sugarcat7
22
5k
GoとWASI~超入門~
sugarcat7
2
230
最近個人開発が熱い ~多言語対応編~
sugarcat7
2
260
ボイラープレート自動生成ツールを使わなくなった話.pdf
sugarcat7
4
600
Using_Hono_in__B2B_SaaS_Application.pdf
sugarcat7
6
460
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
We Have a Design System, Now What?
morganepeng
51
7.5k
Adopting Sorbet at Scale
ufuk
75
9.3k
Typedesign – Prime Four
hannesfritz
41
2.6k
It's Worth the Effort
3n
184
28k
Building an army of robots
kneath
304
45k
BBQ
matthewcrist
88
9.5k
Code Review Best Practice
trishagee
67
18k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
7
620
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
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でエラートラッキングも実装できる! まとめ