Из того, что я вижу, реализация 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
Ответ 4
dtrace существует для linux (https://github.com/dtrace4linux) и http://crtags.blogspot.com.
Ответ 5
Oracle переносит DTrace на linux: https://oss.oracle.com/projects/DTrace/
Не знаю, как это работает только с их дистрибутивом linux или любым другим.
Ответ 6
Linux имеет strace/ltrace (см. этот пост о strace). Но они не эквивалентны DTrace, они просто покрывают небольшую часть того, что может сделать DTrace (на самом деле DTrace значительно превосходит любые предложения Linux).