
Interfaccia utente terminale per il monitoraggio e l'ispezione in tempo reale di programmi e mappe eBPF utilizzando bpftool, consentendo il debugging e l'analisi dal vivo dei dati di osservabilità a livello di kernel.
ebpfmon è uno strumento per il monitoraggio dei programmi eBPF. È progettato per essere utilizzato con bpftool del kernel Linux. ebpfmon è un'applicazione TUI (interfaccia utente terminale) scritta in Go che consente di effettuare il monitoraggio in tempo reale dei programmi eBPF.
eBPFmon può essere compilato dal codice sorgente oppure è disponibile una versione già compilata nelle release
$ sudo apt install linux-tools-`uname -r` libelf-dev zlib1g-dev libcap-dev binutils-dev
$ sudo yum install bpftool elfutils-libelf-devel libcap-devel binutils-devel
$ sudo dnf install elfutils-libelf-devel libcap-devel zlib-devel binutils-devel bpftool
$ sudo apt install bpftool libelf-dev zlib1g-dev libcap-dev binutils-dev
$ ./ebpfmon
NOTA: bpftool richiede privilegi di root, quindi ebpfmon eseguirà sudo bpftool .... Ciò significa che probabilmente ti verrà chiesto di inserire la password di sudo.
Prima di tutto, questo strumento è scritto in Go, quindi dovrai averlo installato e nella variabile PATH. Dovrebbe funzionare con Go 1.18 o successivi, anche se è possibile che funzioni con versioni precedenti. Semplicemente non è stato testato.
Successivamente, assicurati di installare le seguenti dipendenze.
Esegui semplicemente i seguenti comandi. Questo compilerà il binario ebpfmon nella directory corrente
$ git clone https://github.com/redcanaryco/ebpfmon.git
$ cd ebpfmon
$ make
La vista principale di ebpfmon è la vista dei programmi. Questa vista mostra tutti i programmi eBPF attualmente caricati nel sistema. Ogni riquadro è selezionabile e puoi passare da un riquadro all'altro usando il tasto tab. In un dato riquadro puoi usare i tasti freccia per scorrere il testo o la selezione della lista verso l'alto o verso il basso. Per le liste, come quelle dei programmi o delle mappe, puoi premere Invio per selezionare. Selezionare un programma popolerà gli altri riquadri con le informazioni su quel programma. Selezionare una mappa passerà a una vista delle voci della mappa che mostra le voci di quella mappa.
Ci sono alcune combinazioni di tasti disponibili in ebpfmon. Sono elencate nella pagina di aiuto a cui è possibile accedere premendo il tasto F1 o il tasto ?
Per accedere alla vista dei programmi, indipendentemente dalla vista in cui ti trovi, puoi premere Ctrl ed e.
Per accedere alla vista delle funzionalità BPF, indipendentemente dalla vista in cui ti trovi, puoi premere Ctrl ed f.
Per accedere alla vista delle mappe, seleziona semplicemente una mappa (se esiste) per il programma eBPF corrente. Questo popolerà la vista delle mappe con le voci della mappa. Puoi eliminare le voci della mappa premendo il tasto d. Nella vista delle mappe puoi formattare i dati delle voci in vari modi. Per raggiungere la sezione di formattazione, premi semplicemente TAB mentre sei nella vista dell'elenco delle voci. Puoi quindi usare TAB per spostarti tra le diverse opzioni di formattazione. Per tornare all'elenco delle voci, premi ESC.
Puoi anche modificare le voci della mappa premendo INVIO su una selezione. Nella vista di modifica puoi modificare i valori grezzi dei byte della chiave/valore della mappa. Puoi ignorare le parentesi quadre.
Per uscire dall'applicazione puoi premere q o Q
Generalmente il tasto ESC dovrebbe riportarti alla vista precedente in cui ti trovavi. Inoltre, se sei nella vista di aiuto o nella vista degli errori, premere ESC dovrebbe riportarti alla finestra precedente.
-bpftoolConsente di specificare il percorso del binario bpftool. Utile se si dispone di una build personalizzata di bpftool che si desidera utilizzare. Di default utilizza il binario bpftool di sistema. È anche possibile utilizzare una variabile d'ambiente. Cerca nel seguente ordine:
-bpftool è stato specificato sulla riga di comando.BPFTOOL_PATH è impostata.-logfileQuesto argomento consente di specificare un file di log. Di default registra in ./log.txt. Questo è un ottimo file da controllare quando si cercano di risolvere problemi con l'applicazione, poiché registra gli errori che si verificano durante l'esecuzione.
Ci sono alcuni test di base associati a questo progetto.
Per eseguire i test, basta eseguire il seguente comando dalla directory principale del progetto
$ go test ./...
Se desideri utilizzare il tuo binario bpftool, puoi impostare la variabile d'ambiente BPFTOOL_PATH sul percorso del tuo binario bpftool. Altrimenti, di default verrà utilizzato quello di sistema.