ebpf-goによるLinuxカーネルトレース入門 ebpf-goを使用したLinuxカーネルトレース(fentry)について紹介します。 ebpf-goは、eBPFのGo向けライブラリです。このライブラリは、libbpfに依存せず(cgoを使用せず)にeBPFプログラムとデータのやり取りが可能であるため、ポータビリティが高くGo言語に適したeBPFライブラリとなります。 fentryは、カーネル関数のエントリポイントにプログラムをアタッチするためのBPFプログラムタイプです。簡潔に言うと、カーネル関数にフック処理を行うことができます。 GitHub: ebpf-go(cilium/ebpf) 公式ドキュメント: The eBPF Library for Go 本記事ではebpf-goのexamples内のtcprttを基に、ebpf-goの開発方法についても説明します。 前提条件として、
![ebpf-goによるLinuxカーネルトレース入門](https://cdn-ak-scissors.b.st-hatena.com/image/square/c7fef966f151cd00334a0b7175ee6c63e0f4873d/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--FNmPkiwt--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3Aebpf-go%2525E3%252581%2525AB%2525E3%252582%252588%2525E3%252582%25258BLinux%2525E3%252582%2525AB%2525E3%252583%2525BC%2525E3%252583%25258D%2525E3%252583%2525AB%2525E3%252583%252588%2525E3%252583%2525AC%2525E3%252583%2525BC%2525E3%252582%2525B9%2525E5%252585%2525A5%2525E9%252596%252580%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Ayyamamot%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jS0NRYm54cy1WMlNhTnY1LUV3dUFqX2k4NXRmOUNsMFlzRnZzeXktdXd5PXM5Ni1j%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)