bpftrace: Viết Tracing Trong Một Dòng
LinuxObservability

bpftrace: Viết Tracing Trong Một Dòng

Part I tự viết chương trình eBPF bằng C, clang, bpftool — nhiều bước cho một câu hỏi đơn giản như 'tiến trình nào đang mở file nào'. bpftrace là đường tắt: một dòng lệnh trả lời ngay, không C không clang. Nhưng bên dưới vẫn là eBPF — bài này chứng minh điều đó (bpftool thấy chương trình bpftrace nạp vào rồi biến mất), rồi đi qua cú pháp probe/filter/action, kho 122 nghìn probe gắn được, và các biến dựng sẵn, qua các one-liner chạy thật trên cụm.

K
KaiMay 24, 2026· 4 views
BTF và CO-RE: Một Lần Biên Dịch, Chạy Mọ...
LinuxeBPF

BTF và CO-RE: Một Lần Biên Dịch, Chạy Mọi Kernel

Cấu trúc dữ liệu bên trong nhân như task_struct có layout khác nhau giữa các phiên bản kernel — field nằm ở offset nào tùy bản. Vậy làm sao một chương trình eBPF biên dịch sẵn đọc đúng field trên mọi kernel? Câu trả lời là BTF và CO-RE. Bài cuối Part I sinh vmlinux.h từ BTF của nhân, viết một chương trình đọc ppid bằng cách lần qua task->real_parent->tgid, biên dịch một lần và chạy — libbpf tự tìm offset đúng theo BTF của kernel đang chạy. Đây cũng là nền cho Part III tự viết công cụ thật.

K
KaiMay 24, 2026· 4 views
Program Type và Hook: Gắn Vào Đâu, Thấy ...
LinuxeBPF

Program Type và Hook: Gắn Vào Đâu, Thấy Được Gì

Một chương trình eBPF không chạy lơ lửng — nó gắn vào một hook trong nhân, và loại hook đó quyết định ba thứ: chương trình chạy lúc nào, nhận context gì, và được gọi helper nào. Bài này liệt kê các program type nhân hỗ trợ, rồi gắn một tracepoint vào syscall openat để thấy nó chạy thật trên mỗi lần mở file — tương phản với XDP nhận gói tin ở bài trước, để thấy vì sao cùng là eBPF mà mỗi loại thấy một thế giới khác nhau.

K
KaiMay 24, 2026· 5 views
Maps: Bộ Nhớ và Cầu Nối Với Userspace
LinuxeBPF

Maps: Bộ Nhớ và Cầu Nối Với Userspace

Một chương trình eBPF chạy theo từng sự kiện rồi tắt, không giữ biến giữa các lần. Maps là cách nó nhớ trạng thái và nói chuyện với userspace. Bài này viết một chương trình đếm mỗi lần có tiến trình exec vào một map, nạp vào nhân, chạy vài lệnh, rồi đọc map từ userspace bằng bpftool — thấy con số tăng thật. Kèm soi một map thật của Cilium đang giữ metric per-CPU, và phân biệt array thường với per-CPU.

K
KaiMay 24, 2026· 6 views
Máy Ảo eBPF: Thanh Ghi, Tập Lệnh và Byte...
LinuxeBPF

Máy Ảo eBPF: Thanh Ghi, Tập Lệnh và Bytecode

Bài trước thấy một chương trình eBPF có 'xlated 512B' (bytecode đã verify) và 'jited 333B' (mã máy). Bài này đi vào trong cái bytecode đó: eBPF là một máy ảo kiểu RISC với 11 thanh ghi 64-bit, một tập lệnh nhỏ, được thiết kế để vừa dịch nhanh sang mã máy gốc vừa kiểm chứng được an toàn. Ta đọc thẳng bytecode của một chương trình Cilium đang chạy, soi từng lệnh ánh xạ ra thanh ghi và lớp lệnh nào, rồi xem vì sao đúng thiết kế máy ảo này mới cho phép verifier chứng minh an toàn.

K
KaiMay 24, 2026· 6 views
Dọn Dẹp Toàn Bộ và Tổng Kết
DevOpsAWS

Dọn Dẹp Toàn Bộ và Tổng Kết

Bài cuối. Cụm EC2 đã làm xong việc của nó, và để nó chạy là đốt tiền mỗi giờ. Bài này dọn sạch toàn bộ hạ tầng theo đúng thứ tự — terminate sáu instance (kéo theo ổ đĩa), trả Elastic IP, gỡ IAM role — kèm bảng chi phí thật để thấy ba lựa chọn: chạy tiếp, stop để dành, hay xóa hẳn. Rồi nhìn lại cả hành trình: từ một certificate tự ký tới một cụm Kubernetes HA vận hành đầy đủ, dựng tay từng mảnh.

K
KaiMay 24, 2026· 11 views
Node Log Query và Phân Quyền Kubelet Chi...
DevOpsSecurity

Node Log Query và Phân Quyền Kubelet Chi Tiết

Bài 65 xem log thành phần hệ thống bằng cách SSH vào từng node chạy journalctl. v1.36 cho query log đó thẳng qua API kubelet, không cần SSH. Và đi kèm là một thay đổi bảo mật: quyền truy cập API kubelet, trước đây gộp một cục trong nodes/proxy, nay tách chi tiết từng endpoint — cho phép cấp đúng nodes/metrics cho agent giám sát mà không trao luôn quyền đọc log hay exec. Bài cuối Part XIV, cả hai chạm tới thành phần ta tự dựng ở Part I.

K
KaiMay 24, 2026· 7 views