eBPF sudah menjadi teknologi infrastruktur modern yang powerful untuk observability, networking, dan security. Namun, barrier to entry cukup tinggi karena sebagian besar tooling masih berbasis C. Gobee, proyek open source dari Boran Tarikulu, mengubah paradigma ini dengan memungkinkan developer menulis program eBPF menggunakan Go. Artikel ini akan membimbingmu dari instalasi hingga deploy program BPF pertamamu.
Pastikan kernel Linux kamu minimal versi 5.x dengan config CONFIG_BPF_SYSCALL aktif. Install Go versi 1.22 atau lebih baru, lalu pasang LLVM dan Clang untuk compile BPF bytecode. Clone repository Gobee dan jalankan go mod tidy. Verifikasi environment dengan menjalankan contoh program hello yang disediakan di folder examples. Jika muncul output tracing tanpa error, setup sudah valid.
Gobee mengabstraksi layer C melalui binding Go yang memanggil libbpf secara internal. Struktur proyek umumnya terdiri dari file Go untuk userspace logic dan section khusus untuk BPF program. Pahami bahwa kode BPF tetap di-compile ke ELF, tapi kamu tidak perlu menulis C secara manual. Fokuskan pemahaman pada map, program type (kprobe, tracepoint, XDP), dan attach point yang sesuai dengan use case.
Buat file main.go dan impor package gobee. Definisikan struct untuk event yang akan dikirim dari kernel space ke userspace via BPF map. Tulis handler di Go yang membaca dari perf buffer atau ring buffer. Contoh use case: tracing setiap kali fungsi do_sys_open dipanggil di kernel, lalu mencetak nama file dan PID yang melakukan open. Kode Go akan terlihat seperti menulis program logging biasa.
Gunakan API Gobee untuk compile source BPF secara on-the-fly atau load ELF yang sudah pre-compiled. Perhatikan permission: loading BPF program butuh capability CAP_BPF atau root access. Jalankan binary dengan sudo dan verifikasi program ter-attach melalui bpftool prog list. Jika program tidak muncul, cek dmesg untuk pesan verifier error yang sering kali disebabkan oleh unbounded loop atau invalid memory access.
eBPF bukan hanya untuk eksperimen lokal. Integrasikan programmu dengan pipeline observability seperti Prometheus atau export ke OpenTelemetry. Pastikan kamu meng-handle graceful shutdown: detach program BPF saat proses Go di-terminate untuk menghindari orphan programs yang tetap berjalan di kernel. Gunakan systemd unit atau container dengan privilege minimal untuk menjalankan agent BPF di production.
Go dan eBPF adalah kombinasi yang sangat menjanjikan untuk era cloud-native infrastructure. Dengan Gobee, tim platform bisa membangun tool observasi custom tanpa harus maintaining codebase C. Lihat dokumentasi dan contoh lengkapnya di repository Gobee di GitHub.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu