Blog
Thoughts on engineering, design, and building great products.
Capstone: Tự Viết connmon — Monitor Kết Nối TCP Toàn Node
Bài cuối: ghép mọi thứ đã học thành một công cụ thật. connmon gắn kprobe vào tcp_connect trong nhân, đẩy mỗi kết nối TCP mới qua ring buffer, và một loader Go in chúng ra theo thời gian thực — pid, tiến trình, đích IP:port. Chỉ hơn trăm dòng, một binary tĩnh, chạy trên cụm thấy ngay coredns, kubelet, curl đang kết nối đi đâu. Kèm một cái bẫy build thật của kprobe. Rồi nhìn lại toàn bộ hành trình eBPF từ số không.
cilium/ebpf: Nạp eBPF Từ Go
Bài 9 dựng execsnoop bằng C với libbpf. Bài này viết lại đúng công cụ đó nhưng nạp từ Go bằng thư viện cilium/ebpf — cách hệ sinh thái Kubernetes (Cilium, Tetragon, Falco) build ứng dụng eBPF. Phía nhân không đổi; bpf2go biên dịch nó và nhúng thẳng object vào mã Go, rồi một chương trình Go gắn tracepoint và đọc ring buffer. Kết quả là một binary tĩnh duy nhất, không phụ thuộc libbpf.so — và ta gặp đúng những cái bẫy thật khi dựng nó.