Slide 1

Slide 1 text

DATADOG APM LAMBDA WEB ADAPTER / ECHO / GO 2026-08-26 JDDUG LT Lambda Web Adapter + Echo の Go サーバーに Datadog APM を⼊れた話 01 株式会社ウェザーニューズ / 國分 虎海太 (KOKUBUN Kota)

Slide 2

Slide 2 text

WHO AM I ⾃⼰紹介 はじめまして!! 名前: 國分 虎海太 (こくぶん こうた) 出⾝: 福島県 学部⾶び級卒業後に修⼠課程まで進み、2025年4⽉に 社会⼈デビューした24歳です 仕事: 株式会社ウェザーニューズ / モバイル‧ インターネット事業部 / バックエンドチーム 02 興味: SRE (オブザーバビリティ) / Go⾔語 バックエンド技術 初参加で緊張してます。野球やってました。エヴァ好きです。趣味は⾊々です。最近体重が増

Slide 3

Slide 3 text

SETUP 今日の題材 Lambda 上の Go の API に APM を⼊れたい Lambda Web Adapter で Echo を動かし、Datadog Lambda Extension でトレースを送る構成 計測を⼊れる2つのやり⽅があるらしい Tracer コードに明⽰的にスパンを書く。dd-trace-go ライブラリなどを使⽤。 やってみたこと - どちらの場合もDatadog Lambda Extensionを使う - ライブラリを使うときに WithLambdaModeをfalseにする 03 Orchestrion → ライブラリのコード内にコメントアウ 特定の形式に沿ったコメントを書く。ビルド時 に、Orchestrion⽤のビルドをする。 トとして書いてあった Orchestrionめっちゃ便利でした。あと、最近顔の脱⽑始めました

Slide 4

Slide 4 text

DOUSHITE 試してみた結果 あれ... OrchestrionだとDatadog に何も出ない😭 コメントを付けてビルドし、デプロイして、Datadog コンソールを⾒た 書いたコードのサンプル //dd:span の形で書くとスパンが入る 疑問に思ったこと - はちゃんとデータが送られているのに... func DoSomething(ctx context.Context, in string) error { // ... 処理 ... 明⽰的にライブラリを使って書いたやつ - Orchestrionってどうやってスパンとかの コードを⽣成してるんだろう } 04 分割キーボード Cornix にだんだん慣れてきたせいで普通の打てなくなりました

Slide 5

Slide 5 text

INVESTIGATION 調査 Orchestrion が⽣成したコードを読んでみた -work で⼀時ディレクトリを残し、-a で全パッケージを強制的に再ビルドする 中間ファイルを残してビルドする $ orchestrion go build -work -a ./... 期待通りっぽく見える中間ファイル - コードが⼊っていた WORK=/tmp/go-build2384957348 自動生成されたコードの一例 func init() { __orchestrion_tracer.Start() } e := __orchestrion_echotrace.Wrap(echo.New()) 05 最近nvim使ってます //dd:span を付けた関数にはスパン⽣成 トレーサーの初期化も⽣成されている

Slide 6

Slide 6 text

ROOT CAUSE 原因と修正 WithLambdaModeを⼿動でfalseにして解決 Orchestrionの機能ではここを補えなかった 01 Lambda環境で動くとLambdaModeが⾃動でtrueになる 02 Tracerを⾃分で初期化し、その際にfalseにした init() → main() の順に⾛るので、main()内の⼿動の Start が既定の Start を上書きする 06 最近herdr使ってます。AWS summitでDatadogのTシャツもらえませんでした😢

Slide 7

Slide 7 text

OWARI さいごに サポートに問い合わせた結果、サポート外の⽅法でした OrchestrionはLambdaの環境ではサポートしていないようです 導⼊は楽だったので選択肢の⼀つにも?? - 想定されていない使⽤⽅法なので、責任は負えません!!! よいDatadogライフを!! ありがとうございました!! 07 ぜひZennの記事も読んでください!!