Netto adalah alat pemantauan jaringan berbasis eBPF untuk Linux yang mengukur biaya CPU dari tumpukan jaringan Linux.
NET_RX_SOFTIRQ
ke dalam fungsi jaringan dasar dengan pembuatan profil berbasis jejak tumpukan kernelBPF_MAP_TYPE_TASK_STORAGE
) Membangun Netto sebagai aplikasi mandiri umumnya tidak disarankan; pengguna sebaiknya menggunakan Dockerfile
yang disediakan untuk membuat image container yang akan menyederhanakan penerapan dan pengelolaan alat tersebut.
Bangun Netto ke dalam gambar kontainer (di sini diberi tag "netto") dengan:
docker build -t netto https://github.com/miolad/netto.git#perf-event-mmapable-array
Harap perhatikan bahwa gambar yang dihasilkan memerlukan kemampuan CAP_BPF
CAP_SYS_ADMIN
, yang pada sebagian besar penyiapan berarti penampung harus dijalankan dalam mode --privileged
.
Jika Anda masih lebih memilih untuk membuat alat ini secara mandiri, Anda memerlukan:
Kompilasi dan jalankan dengan:
cargo xtask run [--release]
$ ./netto -h
eBPF-based network diagnosis tool for Linux
Usage: netto [OPTIONS]
Options:
-f, --frequency Perf-event's sampling frequency in Hz for the NET_RX_SOFTIRQ cost breakdown [default: 1000]
-a, --address Bind address for the web frontend [default: 0.0.0.0]
-p, --port Bind port for the web frontend [default: 8080]
--user-period User-space controller update period in ms [default: 500]
-l, --log-file Path to a log file to which measurements are to be saved. If logging is enabled by providing this argument, any other form of web interface will be disabled
-P, --prometheus Enable Prometheus logging in place of the web interface. The Prometheus-compatible endpoint will be available at `http://address:port`
-h, --help Print help
-V, --version Print version
Secara default, Netto memperlihatkan hasil waktu nyata sebagai halaman web bertenaga Wasm yang dapat diakses di http://address:port
. Antarmuka ini ideal untuk menggunakan konten saat diproduksi, tetapi tidak menyediakan dukungan siap pakai untuk menyimpan metrik yang diekstraksi untuk akses tertunda. Ketika pemantauan host secara real-time bukan merupakan perhatian utama, dan untuk berintegrasi lebih baik dengan tumpukan pengumpulan metrik yang ada (seperti di lingkungan pusat data), disarankan untuk mengganti frontend web kustom bawaan dengan eksportir berbasis Prometheus dengan opsi baris perintah -P
(atau --prometheus
).
Dalam kebanyakan kasus, cara yang disarankan untuk menjalankan Netto melibatkan perintah yang mirip dengan:
docker run --name netto --privileged --restart unless-stopped -d -p 8080:8080 netto -P
Atau dengan entri konfigurasi docker compose
yang setara:
services:
netto:
build: https://github.com/miolad/netto.git#perf-event-mmapable-array
image: netto
container_name: netto
privileged: true
command: -P
restart: unless-stopped
...
Dengan memilih opsi -P
, Netto dapat ditargetkan oleh scraper Prometheus dan direferensikan langsung di Grafana. Contoh dasbor yang menampilkan metrik utama yang dikumpulkan oleh Netto tersedia sebagai grafana_dashboard.json
(yang mengasumsikan bahwa variabel "host" digunakan untuk membedakan antara host yang dipantau berbeda melalui label "pekerjaan" Prometheus, untuk dikonfigurasikan dalam pengaturan Prometheus) .
Map | Isi |
---|---|
images | Gambar yang digunakan pada README ini |
netto | Peti biner Rust utama |
netto/src/bpf | program BPF-C |
metrics-common | Peti perpustakaan Bridge Rust untuk frontend main dan web-frontend |
web-frontend | Bagian depan Rust WebAssembly |
www | File statis untuk frontend web |
xtask | Peti biner utilitas untuk mengatur koordinasi antar peti lainnya |