
Terminal-Benutzeroberfläche für Echtzeit-Überwachung und Inspektion von eBPF-Programmen und -Maps mit bpftool, die Live-Debugging und Analyse von Kernel-Level-Observability-Daten ermöglicht.
ebpfmon ist ein Werkzeug zur Überwachung von eBPF-Programmen. Es wurde für die Verwendung mit bpftool aus dem Linux-Kernel entwickelt. ebpfmon ist eine TUI-Anwendung (Terminal-UI), die in Go geschrieben ist und eine Echtzeit-Überwachung von eBPF-Programmen ermöglicht.
eBPFmon kann aus dem Quellcode erstellt werden, oder es gibt eine kompilierte Version in den Releases
$ 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
HINWEIS: bpftool benötigt Root-Rechte, daher führt ebpfmon sudo bpftool ... aus. Das bedeutet, dass Sie wahrscheinlich aufgefordert werden, Ihr sudo-Passwort einzugeben.
Zunächst einmal ist dieses Werkzeug in Go geschrieben, daher müssen Sie Go installiert und in Ihrer PATH-Variable haben. Es sollte mit Go 1.18 oder neuer funktionieren, es könnte aber auch mit älteren Versionen funktionieren. Es wurde nur nicht getestet.
Stellen Sie als Nächstes sicher, dass die folgenden Abhängigkeiten installiert sind:
Führen Sie einfach die folgenden Befehle aus. Dies erstellt die ebpfmon-Binärdatei im aktuellen Verzeichnis.
$ git clone https://github.com/redcanaryco/ebpfmon.git
$ cd ebpfmon
$ make
Die Hauptansicht von ebpfmon ist die Programm-Ansicht. Diese Ansicht zeigt alle eBPF-Programme an, die derzeit auf dem System geladen sind. Jeder Bereich ist auswählbar, und Sie können zwischen den Bereichen mit der Tab-Taste wechseln. In einem bestimmten Bereich können Sie mit den Pfeiltasten den Text scrollen oder die Listenauswahl nach oben und unten bewegen. Bei Listen wie Programmen oder Maps können Sie durch Drücken der Eingabetaste eine Auswahl treffen. Durch die Auswahl eines Programms werden die anderen Bereiche mit Informationen über dieses Programm gefüllt. Durch die Auswahl einer Map wird zur Map-Eintragsansicht gewechselt, die die Einträge für diese Map anzeigt.
In ebpfmon sind einige Tastaturkürzel verfügbar. Diese sind auf der Hilfeseite aufgeführt, die Sie durch Drücken der F1-Taste oder der ?-Taste erreichen können.
Um zur Programm-Ansicht zu gelangen, egal in welcher Ansicht Sie sich befinden, drücken Sie Strg und e.
Um zur Bpf-Feature-Ansicht zu gelangen, egal in welcher Ansicht Sie sich befinden, drücken Sie Strg und f.
Um zur Map-Ansicht zu gelangen, wählen Sie einfach eine Map (falls vorhanden) für das aktuelle eBPF-Programm aus. Dadurch wird die Map-Ansicht mit den Map-Einträgen gefüllt. Sie können Map-Einträge durch Drücken der d-Taste löschen. In der Map-Ansicht können Sie die Map-Eintragsdaten auf verschiedene Weise formatieren. Um zum Formatierungsbereich zu gelangen, drücken Sie einfach Tab, während Sie sich in der Map-Eintragslistenansicht befinden. Sie können dann mit Tab zwischen den verschiedenen Formatierungsoptionen wechseln. Um zur Map-Eintragsliste zurückzukehren, drücken Sie ESC.
Sie können Map-Einträge auch bearbeiten, indem Sie bei einer Auswahl die Eingabetaste drücken. In der Bearbeitungsansicht können Sie die rohen Byte-Werte des Map-Schlüssels/-Werts bearbeiten. Die eckigen Klammern können Sie ignorieren.
Um die Anwendung zu beenden, drücken Sie q oder Q.
Im Allgemeinen sollten Sie mit der ESC-Taste zur vorherigen Ansicht zurückkehren. Wenn Sie sich in der Hilfe- oder Fehleransicht befinden, sollten Sie durch Drücken von Escape zum vorherigen Fenster zurückkehren.
-bpftoolErmöglicht es Ihnen, den Pfad zur bpftool-Binärdatei anzugeben. Dies ist nützlich, wenn Sie eine benutzerdefinierte Version von bpftool verwenden möchten. Standardmäßig wird die systemeigene bpftool-Binärdatei verwendet. Sie können auch eine Umgebungsvariable verwenden. Die Reihenfolge der Prüfung ist:
-bpftool in der Befehlszeile angegeben wurde.BPFTOOL_PATH gesetzt ist.-logfileDieses Argument ermöglicht es Ihnen, eine Datei für die Protokollierung anzugeben. Standardmäßig wird in ./log.txt protokolliert. Dies ist eine gute Datei, um beim Debuggen von Problemen mit der Anwendung zu überprüfen, da sie Fehler protokolliert, die während der Laufzeit aufgetreten sind.
Es gibt einige grundlegende Tests für dieses Projekt.
Um die Tests auszuführen, führen Sie einfach den folgenden Befehl aus dem Stammverzeichnis des Projekts aus:
$ go test ./...
Wenn Sie Ihre eigene bpftool-Binärdatei verwenden möchten, können Sie die Umgebungsvariable BPFTOOL_PATH auf den Pfad Ihrer bpftool-Binärdatei setzen. Andernfalls wird standardmäßig die systemeigene Binärdatei verwendet.