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
eBPFインターン 開発ネタ帳
Search
KONDO Uchio
September 08, 2020
Technology
0
150
eBPFインターン 開発ネタ帳
KONDO Uchio
September 08, 2020
Tweet
Share
More Decks by KONDO Uchio
See All by KONDO Uchio
大規模レガシーテストを 倒すための CI基盤の作り方 / #CICD2023
udzura
5
2.3k
Ruby x BPF in Action / RubyKaigi 2022
udzura
0
190
Narrative of Ruby & Rust
udzura
0
170
開発者生産性指標の可視化 / pepabo-four-keys
udzura
3
1.6k
Talk of RBS
udzura
0
390
Re: みなさん最近どうですか? / FGN tech meetup in 2021
udzura
0
710
Dockerとやわらかい仮想化 - ProSec-IT/SECKUN 2021 edition -
udzura
2
670
Device access filtering in cgroup v2
udzura
1
770
"Story of Rucy" on RubyKaigi takeout 2021
udzura
0
720
Other Decks in Technology
See All in Technology
AIチャットボット開発への生成AI活用
ryomrt
0
170
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
370
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
990
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
7
800
Terraform Stacks入門 #HashiTalks
msato
0
350
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
TypeScript、上達の瞬間
sadnessojisan
46
13k
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
1
2.3k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
隣接領域をBeyondするFinatextのエンジニア組織設計 / beyond-engineering-areas
stajima
1
270
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Designing Experiences People Love
moore
138
23k
Done Done
chrislema
181
16k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
GitHub's CSS Performance
jonrohan
1030
460k
Building an army of robots
kneath
302
43k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
For a Future-Friendly Web
brad_frost
175
9.4k
Transcript
PEPABO SUMMER INTERN VERSION 近藤うちお / GMO Pepabo, Inc. 2020.09.08
eBPF インターンネタ帳
この資料は何 •ペパボインターンで「皆様にやって欲しいこと」のネタ帳です。 •ここにない内容でももちろん構わないのですが、 なかなか現場でeBPFを活用するネタをゼロから提案するのは難しい でしょうので、当座で @udzura が欲しいものを考えてみました。 •@udzura なら時間をかければ書けるものもありますし、 そもそもいったい何なのか調べるところからというものもあります。
ツール作成・検証
コンテナ対応トレースのPoC •「コンテナ対応」には皆さんもご存知の通り2方針がある •eBPFのCgroup v2ヘルパーを利用したもの •task_struct からnamespaceを辿ってフィルタするもの •これらのそれぞれの方針について、違いやメリットデメリット、 それぞれの制限をレポートし、 そして簡単な検証環境とミニマルな実装を作成して欲しい
マネージドクラウド用ツール開発 •マネージドクラウドというコンテナをふんだんに使ったサービスがあ り、コンテナ単位でのトレースをしたい気持ちがある。 •BCCツールの中でも以下あたりをコンテナ対応できると嬉しい •ext4slower •nfsslower •tcpconnlat •syscount •......
mod_dtrace 検証 •https://github.com/Matty9191/apache-dtrace-module •https://prefetch.net/projects/apache_modtrace/index.html •マネージドクラウドやその他ホスティングサービスで使えるかどう か、簡単なドキュメントと、いろいろな設定のApacheに対してどの ような計測ができそうかレポートして欲しい。
PHPまたはRubyのUSDT利用のPoC •PHP、Rubyともに --enable-dtrace でUSDTが入る •これらを使って有益なツールが考えられないか? •e.g. Rack::EBPF https://github.com/udzura/rack-ebpf •e.g. mod_php
や他のUSDTと組み合わせたもの https://myaut.github.io/dtrace-stap-book/app/web.html •WordPress とかで解析できないかな?
systemdのkillを監視するツール開発 •systemdが謎にサービスをkillしているような気配があった •状況証拠から原因を突き止めたが、その現場を突き止められるよう なツールを作成して欲しい。 •killsnoop をベースに作れないかな? •https://github.com/iovisor/bcc/blob/master/tools/killsnoop.py •できれば再現可能な動作環境とともに実装して欲しい
トレース状況を可視化するツール •トレース情報は 1) 多い 2) 雑多 になりがちで、いい感じのグラフ などにならないと運用で常用するのは難しい... •BCCの既存ツールベースでいいので、それらの結果をTUIじゃなくて もっと綺麗にできないか?
•e.g. matplotlib(Rubyならcharty)と簡単連携ライブラリ •e.g. Jupyter Notebook ベースのツール •e.g. Prometheus などと連携した何か
sheer-heart-attackをeBPF対応 •https://github.com/k1LoW/sheer-heart-attack •常駐させて特定のイベントの時に特定のコマンドを発火させるツール このイベントソースにeBPFを用いることでアレできないか? •提案レベルでも動かせたらあとは @k1LoW さんがやってくれる •eBPFのイベント例: システムコールの回数、レイテンシ、TCP接続 の何か、etc...
•gobpf使うかも: https://github.com/iovisor/gobpf
RbBCCの改善 ※ 要Rubyの知識 ※ しかも割と高度な
RbBCC •@udzura が開発しているBCCのRuby port •中身はlibbccのFFIで、BCC同梱のPythonライブラリと全く同じ思想 •Rubyアソシエーション開発助成対象プロジェクト(2019) •https://github.com/udzura/rbbcc
RbBCCで困ってること •テストケースが全然ない •スモークテストだけなので、もう少し現実的なテストケースを考え て追加してくれると嬉しい(これは、Rubyのインターン感が強い) •サンプル、ツールがまだまだ少ない •Python版BCCにあるツールがそもそもRubyに移植できるのかから調 べる。足りない機能は実装する
RbBCCで困ってること(2) •RbBCCにおけるネットワークトレーシング実装の移植 •XDP含めその辺りのAPIを移植していない •BCCの examples/networking/* 以下のサンプルを移植し、 動くようにして欲しい。一つでも増えると嬉しい •@udzura はネットワークあんまり得意じゃないっすので...
その他、RbBCC周辺で •BPFQLで他のProbeを実装して欲しいなあ........ •https://github.com/udzura/bpfql •いまのところtracepointしかうごかなくて、完全にPoCレベル •こいつにはメタプロ含むRubyの知識が必要なので、さすがに大変だ と思いますが...