
Interfaz de usuario de terminal para monitoreo e inspección en tiempo real de programas y mapas eBPF usando bpftool, permitiendo la depuración y análisis en vivo de datos de observabilidad a nivel de kernel.
ebpfmon es una herramienta para monitorear programas eBPF. Está diseñada para usarse con bpftool del kernel de Linux. ebpfmon es una aplicación TUI (interfaz de usuario de terminal) escrita en Go que permite realizar monitoreo en tiempo real de programas eBPF.
eBPFmon se puede compilar desde el código fuente o hay una versión compilada disponible en los lanzamientos
$ 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 necesita privilegios de root, por lo que ebpfmon ejecutará sudo bpftool ....
Esto significa que probablemente se le pedirá que ingrese su contraseña de sudo.
Antes que nada, esta herramienta está escrita en Go, por lo que deberá tenerlo instalado y en su variable PATH. Debería funcionar en Go 1.18 o posterior, aunque es posible que funcione en versiones anteriores. Simplemente no ha sido probado.
A continuación, asegúrese de instalar las siguientes dependencias.
Simplemente ejecute los siguientes comandos. Esto compilará el binario ebpfmon en el directorio actual.
$ git clone https://github.com/redcanaryco/ebpfmon.git
$ cd ebpfmon
$ make
La vista principal de ebpfmon es la vista de programas. Esta vista muestra todos los programas eBPF que están actualmente cargados en el sistema. Cada panel es seleccionable y puede cambiar entre paneles usando la tecla tab. En un panel dado puede usar las teclas de flecha para desplazar el texto o la selección de la lista hacia arriba y abajo.
Para listas como las de programas o mapas, puede presionar Enter para seleccionar. Seleccionar un programa poblará los otros paneles con información sobre ese programa. Seleccionar un mapa cambiará a una vista de entradas de mapa que muestra las entradas para ese mapa.
Hay algunos atajos de teclado disponibles en ebpfmon. Estos se enumeran en la página de ayuda a la que se puede acceder presionando la tecla F1 o la tecla ?.
Para acceder a la vista de programas, independientemente de la vista en la que se encuentre, puede presionar Ctrl y e.
Para acceder a la vista de características BPF, independientemente de la vista en la que se encuentre, puede presionar Ctrl y f.
Para acceder a la vista de mapa, simplemente seleccione un mapa (si existe) para el programa eBPF actual. Esto poblará la vista de mapa con las entradas del mapa. Puede eliminar entradas de mapa presionando la tecla d. En la vista de mapa puede formatear los datos de las entradas de mapa de varias formas. Para llegar a la sección de formato, simplemente presione TAB mientras está en la vista de lista de entradas de mapa. Luego puede usar TAB para moverse entre las diferentes opciones de formato. Para volver a la lista de entradas de mapa, presione ESC.
También puede editar las entradas de mapa presionando ENTER en una selección. En la vista de edición puede editar los valores de bytes sin procesar de la clave/valor del mapa. Puede ignorar los corchetes.
Para salir de la aplicación puede presionar q o Q.
Generalmente, la tecla ESC debería llevarlo de vuelta a la vista anterior en la que se encontraba. Además, si está en la vista de ayuda o en la vista de error, presionar escape debería devolverlo a la ventana anterior.
-bpftoolLe permite especificar la ruta al binario de bpftool. Esto es útil si tiene una compilación personalizada de bpftool que desea utilizar. Por defecto, utilizará el binario de bpftool del sistema. También puede usar una variable de entorno. Buscará en el siguiente orden:
-bpftool en la línea de comandos.BPFTOOL_PATH está configurada.-logfileEste argumento le permite especificar un archivo para registrar. Por defecto, registrará en ./log.txt. Este es un buen archivo para revisar al intentar depurar problemas con la aplicación, ya que registrará los errores que ocurran durante la ejecución.
Hay algunas pruebas básicas asociadas con este proyecto.
Para ejecutar las pruebas, simplemente ejecute el siguiente comando desde el directorio raíz del proyecto:
$ go test ./...
Si desea usar su propio binario de bpftool, puede configurar la variable de entorno BPFTOOL_PATH en la ruta de su binario de bpftool. Si no, se usará el del sistema de forma predeterminada.