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
400
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
4k
Renovateを活用した手離れの良いCDKプロジェクトの作り方
sumiyae
2
290
VIM × AIエージェントで始める記録の好循環
sumiyae
3
1.5k
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
7
1.6k
遅延読み込みの歩みから理解するSeekable OCI
sumiyae
2
470
CDKとLambda Aliasで実現する、SQS+Lambdaの、安全なリリース手法
sumiyae
1
220
Other Decks in Technology
See All in Technology
あるけみー式LTスライド作成術
alchemy1115
1
210
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.6k
AI時代、データエンジニアが一番おもろい
genshun9
0
600
beyond jj: config & tools ecosystem
indirect
0
440
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
What the customer really needed
kawaguti
PRO
2
180
20260912_スクフェス三河
kgnkhkr
0
380
AI に書かせたその API、 “信頼” できますか?
nagix
0
110
データ_AIの事業の勝敗をわけるもの
nek0128
0
360
GoにおけるFFIのこれまでとこれから
goccy
5
3.4k
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Mind Mapping
helmedeiros
1
360
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Joys of Absence: A Defence of Solitary Play
codingconduct
1
520
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
A Modern Web Designer's Workflow
chriscoyier
699
190k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
Dealing with People You Can't Stand - Big Design 2015
cassininazir
368
27k
Music & Morning Musume
bryan
48
7.4k
Navigating Weather and Climate Data
rabernat
0
520
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