Какая альтернатива для DTrace в Linux?

Из того, что я вижу, реализация DTrace на Linux задерживается лицензированием и политикой. Каковы альтернативы в настоящее время?

Ответ 1

Systemtap предназначен для решения таких же проблем, как и dtrace, и имеет аналогичный пользовательский интерфейс - пользователь пишет небольшие скрипты, которые присоединить действия к именованным зондам.

Говорят, что он нестабилен, он обычно не компилируется в ваше ядро ​​по умолчанию, но как только я получил его работу, у меня не было никаких проблем.

Вы можете видеть, как он сравнивается с dtrace в этой таблице на веб-сайте systemtap (Может быть, партизан: -)

Dtrace частично портирован на Linux Пол Фокс, энтузиаст, и доступен для скачивания, чтобы попробовать - посмотрите ссылки на его blog.

Было сказано, что kprobes являются заменой dtrace, но я никогда не пробовал их.

Ответ 2

SystemTap - это абстракция более высокого уровня, построенная на Kprobes. Для получения дополнительной информации о работе Kprobes вы можете прочитать техническую статью

Ответ 3

sysdig - отличное решение.

Некоторые примеры использования включают (их wiki имеет несколько интересных примеров):

Для дискового ввода/вывода

  • См. основные процессы с точки зрения использования пропускной способности диска

    sysdig -c topprocs_file

  • Список процессов, в которых используется большое количество файлов

    sysdig -c fdcount_by proc.name "fd.type = file"

  • Смотрите верхние файлы в терминах чтения + записи байтов

    sysdig -c topfiles_bytes

  • Распечатайте верхние файлы, которые apache читал или записывал в

    sysdig -c topfiles_bytes proc.name = httpd

  • Basic opensnoop: открывается файл snoop по мере их появления

    sysdig -p "% 12user.name% 6proc.pid% 12proc.name% 3fd.num% fd.typechar% fd.name" evt.type = open

  • См. верхние каталоги в терминах активности диска R + W

    sysdig -c fdbytes_by fd.directory "fd.type = file"

  • См. верхние файлы в терминах активности диска R + W в каталоге /tmp

    sysdig -c fdbytes_by fd.filename "fd.directory =/tmp/"

  • Наблюдайте за активностью ввода-вывода во всех файлах с именем 'passwd'

    sysdig -A -c echo_fds "fd.filename = passwd"

  • Показать активность ввода-вывода по типу FD

    sysdig -c fdbytes_by fd.type

Ответ 5

Oracle переносит DTrace на linux: https://oss.oracle.com/projects/DTrace/

Не знаю, как это работает только с их дистрибутивом linux или любым другим.

Ответ 6

Linux имеет strace/ltrace (см. этот пост о strace). Но они не эквивалентны DTrace, они просто покрывают небольшую часть того, что может сделать DTrace (на самом деле DTrace значительно превосходит любые предложения Linux).