Из чего состоит программа

Скрипт bpftrace описывает probes, необязательное условие и действия. Probe выбирает событие, например tracepoint или функцию ядра; predicate ограничивает подходящие случаи, а action печатает данные или обновляет карту. Язык похож на DTrace и компилирует программу в eBPF bytecode.

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

Что зависит от ядра и прав

Доступность probe зависит от версии ядра, сборки, BTF, символов и прав процесса. Некоторые сценарии требуют root или специальных capabilities. Программа также зависит от доступных headers и библиотек; скрипт, работающий на одной системе, может не запуститься на другой.

В документации bpftrace 0.27 есть unstable features, которые могут меняться. Для автоматизации зафиксируйте версию и избегайте экспериментального синтаксиса без проверки совместимости. Трассировку сначала испытывайте на тестовой машине.

Сужайте сбор. Учитывайте права.

Перед запуском определите, какие поля действительно нужны. Собирайте агрегаты или счетчики вместо полного вывода каждого события, особенно на загруженном хосте. Проверяйте план очистки и срок хранения полученных журналов.

Нагрузка и безопасная диагностика

Каждая probe несет стоимость сбора и обработки. Сведите условия к нужному процессу, событию и периоду, а после расследования отключите сбор. Не размещайте в журнале секретные аргументы функций или пользовательские данные, если их обработка не согласована.

bpftrace - диагностический инструмент, не монитор доступности сайта и не тест скорости канала. Смотрите cgroups, namespaces и просмотр процессов Linux. Использованы документация bpftrace 0.27 и Linux eBPF, проверенные 8 октября 2026 года; скрипты на сервере не запускались.