Зачем это
eBPF — это способ выполнить в ядре Linux короткую программу в момент события. Событием может быть запуск процесса, сетевой вызов, операция с диском или приход пакета. Ядро заранее проверяет программу и не даёт ей уйти в бесконечный цикл или писать в чужую память. Состояние между событиями лежит в map: из неё же результат читает обычная программа снаружи.
Это не сетевой протокол и не замена tcpdump. Протокол договаривается, как устроен пакет между узлами. eBPF смотрит или меняет то, что уже происходит на этой машине.
Три работы
- Наблюдать: кто запустил процесс, кто открыл соединение, сколько ждали диск.
- Разобрать пакет рано, ещё до полного сетевого стека. Это XDP.
- Повесить правило на группу процессов, например через cgroup.
Инженеру, который разбирает инцидент, почти всегда нужен первый пункт и готовые инструменты. Вторая и третья работа — уже изменение пути пакета или политики, их не смешивают с «просто посмотреть».
Чего вывод не доказывает
Инструмент показывает событие, которое случилось, пока он был включён. Он не говорит, что это событие — причина жалобы. Процесс мог запуститься рядом. Диск мог ответить быстро, а страница у пользователя ждала совсем другое.
Дальше имеет смысл открыть инструменты и прогнать одну команду на знакомый симптом. Модель — после этого, не до.