Skip to content

bstrace (BPF syscall trace) - утилита для логирования системных вызовов

Notifications You must be signed in to change notification settings

ebirukov/bstrace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bstrace (BPF syscall trace) - утилита для логирования системных вызовов

Concept

Основной замысел - отслеживание системных вызовов пользовательских процессов на стороне ядра, используя технологию ebpf

Реализации и преимущества подхода

Концепт

Основная ebpf C-программа типа BPF_PROG_TYPE_RAW_TRACEPOINT подключается к точке трассировки ядра, отслеживающим системные вызовы из пользовательских процессов, собирает данные о деталях вызовов на стороне ядра, и передает их в пространство пользователя для форматированного вывода.

Основная программа через вспомогательную функцию использует механизм хвостовых вызовов ebpf для реализации логики парсеров конкретных системных вызовов

Приложение в пользовательском пространстве реализовано на go с использованием cilium/ebpf. Приложение конфигурирует и загружает ebpf программы ядра и читает данных из пространства пользователя через ringbuffer

Преимущества написания ebpf программ на C

Верификатор ebpf позволяет избежать основных сложностей при написании программ на C, таких как разыменование нулевых указателей, сложность работы с памятью и т.п. При этом доступны все структуры данных ядра. Библиотека libbpf предоставляет макросы и вспомогательные функции для удобства написания переносимых между архитектурами и версиями ядер программ.

About

bstrace (BPF syscall trace) - утилита для логирования системных вызовов

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published