
Interface de terminal para monitoramento e inspeção em tempo real de programas e mapas eBPF usando bpftool, permitindo depuração ao vivo e análise de dados de observabilidade em nível de kernel.
ebpfmon é uma ferramenta para monitorar programas eBPF. Ela foi projetada para ser usada com bpftool do kernel Linux. ebpfmon é uma aplicação TUI (interface de terminal) escrita em Go que permite monitoramento em tempo real de programas eBPF.
eBPFmon pode ser compilado a partir do código fonte ou existe uma versão compilada disponível nos lançamentos
$ 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 precisa de privilégios de root e, portanto, o ebpfmon executará sudo bpftool .... Isso significa que você provavelmente será solicitado a digitar sua senha de sudo.
Primeiramente, esta ferramenta é escrita em Go, então você precisará tê-lo instalado e na sua variável PATH. Deve funcionar no Go 1.18 ou superior, embora seja possível que funcione em versões anteriores. Apenas não foi testado.
Em seguida, certifique-se de instalar as seguintes dependências.
Simplesmente execute os seguintes comandos. Isso irá compilar o binário ebpfmon no diretório atual
$ git clone https://github.com/redcanaryco/ebpfmon.git
$ cd ebpfmon
$ make
A visualização principal do ebpfmon é a visualização de programas. Esta visualização mostra todos os programas eBPF que estão atualmente carregados no sistema. Cada painel é selecionável e você pode alternar entre os painéis usando a tecla tab. Em um determinado painel, você pode usar as teclas de seta para rolar o texto ou a seleção da lista para cima e para baixo. Para listas como programas ou mapas, você pode pressionar Enter para selecionar. Selecionar um programa preencherá os outros painéis com informações sobre esse programa. Selecionar um mapa alternará para uma visualização de entrada de mapa que mostra as entradas desse mapa.
Existem alguns atalhos de teclado disponíveis no ebpfmon. Eles estão listados na página de ajuda, que pode ser acessada pressionando a tecla F1 ou a tecla ?
Para acessar a visualização de programas, independentemente de qual visualização você esteja, pressione Ctrl e e.
Para acessar a visualização de recursos BPF, independentemente de qual visualização você esteja, pressione Ctrl e f.
Para acessar a visualização de mapas, basta selecionar um mapa (se existir) para o programa eBPF atual. Isso preencherá a visualização de mapas com as entradas do mapa. Você pode excluir entradas do mapa pressionando a tecla d. Na visualização de mapas, você pode formatar os dados da entrada do mapa de várias maneiras. Para ir para a seção de formato, pressione TAB enquanto estiver na visualização da lista de entradas do mapa. Em seguida, você pode usar TAB para navegar entre as diferentes opções de formato. Para voltar à lista de entradas do mapa, pressione ESC
Você também pode editar entradas do mapa pressionando ENTER em uma seleção. Na visualização de edição, você pode editar os valores brutos de bytes da chave/valor do mapa. Você pode ignorar os colchetes.
Para sair da aplicação, pressione q ou Q
Geralmente, a tecla ESC deve levá-lo de volta à visualização anterior em que você estava. Além disso, se você estiver na visualização de ajuda ou de erro, pressionar Escape deve retorná-lo à janela anterior.
-bpftoolPermite especificar o caminho para o binário do bpftool. Isso é útil se você tiver uma versão personalizada do bpftool que deseja usar. Por padrão, ele usará o binário do bpftool do sistema. Você também pode usar uma variável de ambiente. Ele pesquisará na seguinte ordem
-bpftool foi especificado na linha de comandoBPFTOOL_PATH está definida.-logfileEste argumento permite especificar um arquivo para registrar logs. Por padrão, ele registrará em ./log.txt. Este é um ótimo arquivo para verificar ao tentar depurar problemas com a aplicação, pois registrará erros que ocorreram durante a execução.
Existem alguns testes básicos associados a este projeto.
Para executar os testes, basta executar o seguinte comando a partir do diretório raiz do projeto
$ go test ./...
Se você quiser usar seu próprio binário do bpftool, pode definir a variável de ambiente BPFTOOL_PATH para o caminho do seu binário do bpftool. Caso contrário, ele usará o do sistema por padrão.