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
カーネルまで探検して理解するふたつの自動計装
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
すみや
August 22, 2026
Technology
29
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
カーネルまで探検して理解するふたつの自動計装
すみや
August 22, 2026
More Decks by すみや
See All by すみや
EOLを迎えたベースイメージで動く属人化したNginxプロキシを無停止移行した話
sumiyae
1
3.8k
Renovateを活用した手離れの良いCDKプロジェクトの作り方
sumiyae
2
280
VIM × AIエージェントで始める記録の好循環
sumiyae
3
1.5k
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
7
1.6k
遅延読み込みの歩みから理解するSeekable OCI
sumiyae
2
460
CDKとLambda Aliasで実現する、SQS+Lambdaの、安全なリリース手法
sumiyae
1
210
Other Decks in Technology
See All in Technology
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.6k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
gree_tech
PRO
0
100
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
3
550
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
160
【書籍出版記念】 10周回って、エージェント開発は RAGがすべてだった。〜RAGの歴史と開発現場で見えた実践知〜
akiratameto
3
440
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
5
750
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
120
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
110
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
410
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
290
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.2k
The Spectacular Lies of Maps
axbom
PRO
1
940
Facilitating Awesome Meetings
lara
57
7.1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Six Lessons from altMBA
skipperchong
29
4.4k
WCS-LA-2024
lcolladotor
0
800
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
A Soul's Torment
seathinner
6
3.5k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Optimizing for Happiness
mojombo
378
71k
Transcript
カーネルまで探検して理解する ふたつの自動計装 Kernel/VM探検隊@東京 No19 2026/08/22 プラットフォーム部 SREチーム 江口 純矢 ©MNTSQ,
Ltd.
introduction 自己紹介 江口 純矢 (Eguchi Sumiya) 経歴など 新卒入社した会社でアプリケーションエンジニアを経てSREへ転身 現在はMNTSQ株式会社でSRE マイブーム
早起きして人が居ないカフェでゆっくり過ごす (コーヒーは飲めないので牛乳飲んだりしてます) ©MNTSQ, Ltd. 2
introduction 話すのはオブザーバビリティの用語「自動計装」について 計装(instrumentation) = システムを観測可能にするために、計測して記録するコードを組み込むこと 手動計装 自動計装 記録処理をコードに直接書いて計装 アプリのコードを変えずに計装 ©MNTSQ,
Ltd. 3
introduction 話すのはオブザーバビリティの用語「自動計装」について 計装(instrumentation) = システムを観測可能にするために、計測して記録するコードを組み込むこと 手動計装 自動計装 記録処理をコードに直接書いて計装 アプリのコードを変えずに計装 ©MNTSQ,
Ltd. 4
Agenda 1. introduction 2. 深まる自動計装への疑問 3. 探検その1: ライブラリを使用する自動計装 4. 探検その2:
ライブラリを使用しない自動計装 5. まとめ ©MNTSQ, Ltd. 5
深まる自動計装への疑問 なんとなく使ってた自動計装 (以降Datadogを例に) ① ライブラリを1個足して ②起動コマンドの先頭を ddtarce-run で挟んで ©MNTSQ, Ltd.
③ 環境変数を足す 6
深まる自動計装への疑問 ふと湧き上がる疑問たち 何でこれだけで動くの...??? ① ライブラリを1個足して ②起動コマンドの先頭を ddtarce-run で挟んで ©MNTSQ, Ltd.
③ 環境変数を足す 7
深まる自動計装への疑問 ふと湧き上がる疑問たち 自動計装には2種類あるらしい ©MNTSQ, Ltd. 8
深まる自動計装への疑問 ふと湧き上がる疑問たち ©MNTSQ, Ltd. 9
深まる自動計装への疑問 ふと湧き上がる疑問たち 疑問① なんで? ©MNTSQ, Ltd. 10
深まる自動計装への疑問 ふと湧き上がる疑問たち 疑問① なんで? 疑問② なんで? ©MNTSQ, Ltd. 11
深まる自動計装への疑問 ふと湧き上がる疑問たち 疑問① なんで? 疑問② なんで? 疑問③ なんで? ©MNTSQ, Ltd.
12
深まる自動計装への疑問 ふと湧き上がる疑問たち 疑問① なんで? 疑問② なんで? 疑問③ なんで? ©MNTSQ, Ltd.
13
深まる自動計装への疑問 一つずつ探検 ©MNTSQ, Ltd. まずは方式1の仕組みから 14
Agenda 1. introduction 2. 深まる自動計装への疑問 3. 探検その1: ライブラリを使用する自動計装 4. 探検その2:
ライブラリを使用しない自動計装 5. まとめ ©MNTSQ, Ltd. 15
探検その1: ライブラリを使用する自動計装 言語仕様を使い実現 (Pythonを例に) ©MNTSQ, Ltd. 16
探検その1: ライブラリを使用する自動計装 言語仕様を使い実現 (Pythonを例に) 前提:PythonはPYTHONPATHにsitecustomize.pyがあれば実行前にimportする 事前準備 Python実行直前 $ pip install
ddtrace $ ddtrace-run ddtrace/bootstrap/ sitecustomize.py PYTHONPATH Python実行中 $ python app.py site-packages/ sitecustomize.pyを PYTHONPATHに登録 ©MNTSQ, Ltd. sitecustomize.pyを import 諸々のスパンをDatadogへ転送 17
探検その1: ライブラリを使用する自動計装 言語仕様を使い実現 (Pythonを例に) 前提:PythonはPYTHONPATHにsitecustomize.pyがあれば実行前にimportする 事前準備 Python実行直前 $ pip install
ddtrace $ ddtrace-run ddtrace/bootstrap/ sitecustomize.py PYTHONPATH Python実行中 $ python app.py site-packages/ sitecustomize.pyを PYTHONPATHに登録 ©MNTSQ, Ltd. sitecustomize.pyを import 諸々のスパンをDatadogへ転送 18
探検その1: ライブラリを使用する自動計装 sitecustomize.pyで何が起きてる? importごとに差し替え ©MNTSQ, Ltd. 19
探検その1: ライブラリを使用する自動計装 sitecustomize.pyで何が起きてる? 言語ごとに仕組みも変わる... 数多くて importごとに差し替え 更新めっちゃ大変そう... ©MNTSQ, Ltd. 20
Agenda 1. introduction 2. 深まる自動計装への疑問 3. 探検その1: ライブラリを使用する自動計装 4. 探検その2:
ライブラリを使用しない自動計装 5. まとめ ©MNTSQ, Ltd. 21
探検その2: ライブラリを使用しない自動計装 どの言語でも通る場所はないか? 言語ごとに仕組みも変わる... どの言語でも通信時に 必ず通る場所 があれば.... 数多くて 更新めっちゃ大変 システムコールを見張る
©MNTSQ, Ltd. 22
探検その2: ライブラリを使用しない自動計装 どの言語でも通る場所はないか? プロセス Python プロセス syscall HTTPS php ユーザー空間
©MNTSQ, Ltd. カーネル空間 23
探検その2: ライブラリを使用しない自動計装 どの言語でも通る場所はないか? プロセス Python プロセス この辺を監視したい syscall → eBPF
https php ユーザー空間 ©MNTSQ, Ltd. カーネル空間 24
探検その2: ライブラリを使用しない自動計装 ざっくり「eBPF」とは? eBPF = トリガーを指定し発火時にカーネルが実行する処理を安全に登録できる仕組み トリガー例 処理例 ・カーネルの関数が呼ばれたら(kprobe) ・アプリの関数が呼ばれたら(uprobe)
・etc…. 発火のたびにデータを読んで記録 → ユーザー空間のAgent が回収し Datadog へ転送 ©MNTSQ, Ltd. 25
探検その2: ライブラリを使用しない自動計装 eBPFを用いてDatadogに転送 プロセス Python eBPF プロセス syscall HTTPS php
ユーザー空間 ©MNTSQ, Ltd. カーネル空間 26
探検その2: ライブラリを使用しない自動計装 HTTPSの中身はカーネル空間からは覗けない プロセス Python eBPF プロセス php ユーザー空間 ©MNTSQ,
Ltd. syscall HTTPS アプリ側で暗号化され カーネル空間から中が覗けない カーネル空間 27
探検その2: ライブラリを使用しない自動計装 アプリが暗号化する前に読むためにuprobeをトリガーに使用 プロセス Python eBPF プロセス syscall HTTPS php
ユーザー空間 ©MNTSQ, Ltd. アプリ側で暗号化され カーネル空間 SSL_writeの「開始」&「終了」 カーネル空間から中が覗けない をトリガーに指定 28
探検その2: ライブラリを使用しない自動計装 この方式の難点 プロセス Python eBPF syscall プロセス カーネル空間にeBPFを登録するための アクセス権限が必要
HTTPS php プロセスの外側から監視するため アプリ側で暗号化され ユーザー空間 カーネル空間 SSL_writeの「開始」&「終了」 ライブラリ使用方式に比べ粒度が荒い カーネル空間から中が覗けない をトリガーに指定 ©MNTSQ, Ltd. 29
探検その2: ライブラリを使用しない自動計装 やっと見えてきた違い ©MNTSQ, Ltd. 30
Agenda 1. introduction 2. 深まる自動計装への疑問 3. 探検その1: ライブラリを使用する自動計装 4. 探検その2:
ライブラリを使用しない自動計装 5. まとめ ©MNTSQ, Ltd. 31
まとめ 二つの自動計装での違い 疑問① 言語に依存する/しないの違いは? ©MNTSQ, Ltd. 疑問② 監視粒度の細かい/荒いの違いは? 32
まとめ 二つの自動計装での違い 疑問① 言語に依存する/しないの違いは? 疑問② 監視粒度の細かい/荒いの違いは? A. 言語の実行プロセスの中でライブラリごとに監視 vs プロセスの外からsyscallを監視
©MNTSQ, Ltd. 33
まとめ 二つの自動計装での違い 疑問③ Fargateで動く/動かないの違いは? ©MNTSQ, Ltd. 34
まとめ 二つの自動計装での違い 疑問③ Fargateで動く/動かないの違いは? A. 方式1はコンテナ内で完結 vs 方式2はホストのカーネルを使うが Fargateはカーネルへのアクセス権が無く不可 ©MNTSQ,
Ltd. 35
まとめ 探検の調査報告 ©MNTSQ, Ltd. 36
まとめ 二つの自動計装の違いを求めて探検の果てにたどり着いたのは プロセスとカーネルの境界だった ©MNTSQ, Ltd. 37