컨테이너 프로세스를 eBPF로 추적하기 (Day 2) — tracepoint, PID 네임스페이스, ring buffer
·
카테고리 없음
어제(Day 1)는 툴체인을 세팅하고 vmlinux.h를 만들어보고, kprobe 하나가 커널 함수 이름이 바뀌어서 실패하는 걸 직접 겪으며 CO-RE와 verifier의 실체를 확인하는 날이었다. 오늘은 그 위에서 실제로 "컨테이너 프로세스를 추적한다"는 게 커널 레벨에서 무슨 의미인지 파고들고, 실제로 동작하는 코드까지 완성한 날이다.목표는 단순했다. mycontainer로 컨테이너를 하나 띄웠을 때, 그 안에서 새 프로세스가 실행될 때마다 커널이 그 사실을 잡아채서, "이게 어느 컨테이너의 몇 번 프로세스인지"를 유저스페이스로 실시간 전달하는 것.왜 kprobe가 아니라 tracepoint인가어제 겪은 문제를 다시 떠올려보자. do_unlinkat이라는 커널 함수를 kprobe로 걸었는데, 이 커널..