Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
カーネルまで探検して理解するふたつの自動計装
Search
すみや
August 22, 2026
Technology
460
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
4.1k
Renovateを活用した手離れの良いCDKプロジェクトの作り方
sumiyae
2
310
VIM × AIエージェントで始める記録の好循環
sumiyae
3
1.5k
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
7
1.7k
遅延読み込みの歩みから理解するSeekable OCI
sumiyae
2
470
CDKとLambda Aliasで実現する、SQS+Lambdaの、安全なリリース手法
sumiyae
1
220
Other Decks in Technology
See All in Technology
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
220
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
170
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
290
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
120
IR Today: Theory, Practice, and Agents
dtunkelang
0
310
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
650
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
200
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
600
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
100
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
150
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
Building the Perfect Custom Keyboard
takai
2
890
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Are puppies a ranking factor?
jonoalderson
2
4k
Mind Mapping
helmedeiros
1
390
The Cult of Friendly URLs
andyhume
79
7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
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