Главная · eBPF

Инструменты

Ниже готовые средства. Имена команд на дистрибутиве иногда с суффиксом пакета, суть та же. Запуск требует права вешать BPF: обычно это root или capability CAP_BPF и CAP_PERFMON. В закрытом контейнере без этих прав команды не заработают, и это не поломка инструмента.

Кто только что запустился

Симптом: на машине внезапно появилась нагрузка, нужно увидеть новые процессы, а не список всех, кто уже живёт.

execsnoop

Видно имя процесса и аргументы в момент exec. Не видно тех, кто был запущен раньше, чем инструмент. Не видно, зачем процесс стартовал и виноват ли он.

Кто открывает соединение наружу

Симптом: хост сам куда-то подключается, это не входящие сессии на сервис.

tcpconnect

Видно процесс и адрес, куда он вызывает connect. Это не список тех, кто принял входящее соединение, и не содержимое пакета. Для приёма соединения смотрят другой хук, вокруг accept.

Диск отвечает медленно

Симптом: подозрение на блок-устройство, нужна картина задержек, а не каждая операция.

biolatency

Это гистограмма задержки блокового ввода-вывода. Корзина «1–2 мс» значит, что столько заняла операция дискового слоя, а не что страница у пользователя открылась за 2 мс.

Если нужна каждая операция — кто, к какому устройству, сколько ждал — берут biosnoop. Он длиннее в выводе и хуже, когда событий много.

Кто занимает процессор

Симптом: CPU высокий, надо понять, какой процесс чаще оказывается на процессоре.

bpftrace -e 'profile:hz:99 { @[comm] = count(); }'

Это выборка примерно 99 раз в секунду: кто в этот момент исполнялся. Процесс, который ждёт диск или сеть, в эту выборку почти не попадает. Для ожидания диска как раз biolatency, не profile.

К оглавлению