
Interface utilisateur en terminal pour la surveillance et l'inspection en temps réel des programmes et cartes eBPF à l'aide de bpftool, permettant le débogage et l'analyse en direct des données d'observabilité au niveau du noyau.
ebpfmon est un outil de surveillance des programmes eBPF. Il est conçu pour être utilisé avec bpftool du noyau Linux. ebpfmon est une application TUI (interface utilisateur en terminal) écrite en Go qui permet une surveillance en temps réel des programmes eBPF.
eBPFmon peut être compilé à partir des sources ou une version compilée est disponible dans les versions.
$ 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
NOTE: bpftool nécessite des privilèges root et donc ebpfmon exécutera sudo bpftool .... Cela signifie que vous serez probablement invité à entrer votre mot de passe sudo.
Tout d'abord, cet outil est écrit en Go donc vous devez l'avoir installé et dans votre variable PATH. Il devrait fonctionner avec go 1.18 ou ultérieur mais il est possible qu'il fonctionne avec des versions antérieures. Cela n'a simplement pas été testé.
Ensuite, assurez-vous d'installer les dépendances suivantes.
Exécutez simplement les commandes suivantes. Cela construira le binaire ebpfmon dans le répertoire courant.
$ git clone https://github.com/redcanaryco/ebpfmon.git
$ cd ebpfmon
$ make
La vue principale d'ebpfmon est la vue des programmes. Cette vue affiche tous les programmes eBPF actuellement chargés sur le système. Chaque volet est sélectionnable et vous pouvez basculer entre les volets en utilisant la touche tab. Dans un volet donné, vous pouvez utiliser les touches fléchées pour faire défiler le texte ou la sélection de liste vers le haut et vers le bas. Pour les listes telles que les programmes ou les maps, vous pouvez appuyer sur Entrée pour sélectionner. La sélection d'un programme remplira les autres volets avec des informations sur ce programme. La sélection d'une map passera à une vue des entrées de la map qui affiche les entrées de cette map.
Quelques raccourcis clavier sont disponibles dans ebpfmon. Ils sont listés sur la page d'aide accessible en appuyant sur la touche F1 ou la touche ?
Pour accéder à la vue des programmes, quelle que soit la vue dans laquelle vous vous trouvez, vous pouvez appuyer sur Ctrl et e.
Pour accéder à la vue des fonctionnalités BPF, quelle que soit la vue dans laquelle vous vous trouvez, vous pouvez appuyer sur Ctrl et f.
Pour accéder à la vue des maps, sélectionnez simplement une map (si elle existe) pour le programme eBPF actuel. Cela remplira la vue des maps avec les entrées de la map. Vous pouvez supprimer des entrées de la map en appuyant sur la touche d. Dans la vue des maps, vous pouvez formater les données des entrées de différentes manières. Pour accéder à la section de format, appuyez simplement sur TAB lorsque vous êtes dans la vue de la liste des entrées de la map. Vous pouvez ensuite utiliser TAB pour vous déplacer entre les différentes options de format. Pour revenir à la liste des entrées de la map, appuyez sur ESC.
Vous pouvez également modifier les entrées de la map en appuyant sur ENTRÉE sur une sélection. Dans la vue d'édition, vous pouvez modifier les valeurs brutes en octets de la clé/valeur de la map. Vous pouvez ignorer les crochets.
Pour quitter l'application, vous pouvez appuyer sur q ou Q.
Généralement, la touche ESC vous ramène à la vue précédente. De plus, si vous êtes dans la vue d'aide ou la vue d'erreur, appuyer sur Échap devrait vous ramener à la fenêtre précédente.
-bpftoolPermet de spécifier le chemin vers le binaire bpftool. Utile si vous avez une compilation personnalisée de bpftool que vous souhaitez utiliser. Par défaut, il utilise le binaire bpftool du système. Vous pouvez également utiliser une variable d'environnement. Il recherchera dans l'ordre suivant
-bpftool a été spécifié sur la ligne de commande.BPFTOOL_PATH est définie.-logfileCet argument vous permet de spécifier un fichier de journalisation. Par défaut, il journalise dans ./log.txt. C'est un excellent fichier à consulter pour déboguer les problèmes de l'application car il enregistre les erreurs survenues lors de l'exécution.
Il existe quelques tests de base associés à ce projet.
Pour exécuter les tests, exécutez simplement la commande suivante depuis le répertoire racine du projet
$ go test ./...
Si vous souhaitez utiliser votre propre binaire bpftool, vous pouvez définir la variable d'environnement BPFTOOL_PATH sur le chemin de votre binaire bpftool. Sinon, il utilisera celui du système par défaut.