Получи случайную криптовалюту за регистрацию!

​Wassup, что же такое eBPF и bpftrace? eBPF (Enhanced Berkele | Antichrist Blog | 反キリスト∸ブログ

Wassup, что же такое eBPF и bpftrace?

eBPF
(Enhanced Berkeley Packet Filter) — это расширенная версия Беркли-фильтра (BPF). Это абстрактная виртуальная машина (VM), которая работает внутри ядра Linux, подобно ядру виртуальной машины Java. Он позволяет программистам создавать специализированные программы, которые могут быть загружены в ядро Linux и запущены для анализа сетевых пакетов и других системных данных. Он также используется для создания инструментов для отслеживания производительности, которые могут использоваться для диагностики и отладки сетевых проблем.

• apt install libbpf-tools.

Для диагностики используем: tcplife. Эта основанная на eBPF утилита демонстрирует полностью установленные TCP сессии с их ID процесса (PID), именем команды (COMM), отправленными и полученными байтами (TX_KBпередать/Trancieve, RX_KBполучить/Recieve), а также длительность в миллисекундах (MS):

• root@linux:~# tcplife
PID COMM LADDR LPORT RADDR RPORT TX_KB RX_KB MS
5654 ssh 127.0.0.1 4192 127.0.0.1 666 0.00 0.00 0.04


• apt install bpftrace.

BPFtrace — это гибкая и мощная утилита для анализа и отладки производительности ядра Linux, которая использует движок eBPF (расширенный фильтр пакетов Беркли). Он позволяет вам писать сценарии для анализа и отладки производительности ядра в виде скриптов языка BPFtrace. Эти скрипты могут быть использованы для выявления проблем с производительностью в ядре Linux и даже для настройки производительности.

• root@linux:~# bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s -> %s\n", comm, str(uptr(args->filename))); }'

И сразу смотрим вывод, мой взгляд сразу упал на мои плагины: panel-> /asus/scripts/rx_tx.sh.

Эта команда использует инструмент bpftrace для считывания точек трассировки для системных вызовов sys_enter_execve, и выводит на экран имя запущенного процесса и имя его исполняемого файла. Чтобы получить отчет, вы должны запустить эту команду и просмотреть вывод, который она выводит на экран.

Мы можем вывести PID процесса, изменив всего: { printf("%d -> %s\n",pid, str(uptr(args->filename))); }' или { printf("%d,%s -> %s\n",pid,comm, str(uptr(args->filename))); }'.

Вам может быть полезно следующие:
• Руководство по bpftrace.
• Bpftrace с примерами-однострочниками.

Для сетевых инженеров, системных администраторов, да и разработчиков, eBPF — не заменимая утилита. Особенно, если речь идет о бэкенд разработке )

Antichrist Blog & Andromeda, IT, APK, Music, Chat, Archive