D'après ce que je peux voir, une implémentation de DTrace sur Linux est retardée par les licences et la politique. Quelles sont les alternatives actuellement?
Systemtap est conçu pour résoudre le même type de problèmes que dtrace, et possède une interface utilisateur similaire - l'utilisateur écrit de petits scripts qui attachent des actions aux sondes nommées.
On dit qu'il est instable, il n'est généralement pas compilé dans votre noyau par défaut, mais une fois que je l'ai fait fonctionner, je n'ai eu aucun problème.
Vous pouvez voir comment il se compare à dtrace dans ce tableau sur le site web de systemtap (Peut être partisan :-)
Dtrace a été partiellement porté sur Linux par Paul Fox, un passionné, et est disponible en téléchargement pour que vous puissiez essayer - consultez les liens sur son blog .
Il a été dit que kprobes sont un remplacement de dtrace, mais je ne les ai jamais essayés.
SystemTap est une abstraction de niveau supérieur construite sur Kprobes. Pour plus d'informations sur le fonctionnement de Kprobes, vous pouvez lire mon article technique sur LWN.
Comme Alex l'a mentionné, Systemtap résout essentiellement le même problème que dtrace, sauf qu'il est un peu plus lent (vous ne le percevrez peut-être pas, selon ce que vous essayez d'en faire) que dtrace et pas tout à fait aussi poli ou sûr utiliser.
Pour installer le package de développement SystemTap SDT, essayez:
yum install systemtap-sdt-devel
sysdig
est maintenant une excellente solution.
Certains cas d'utilisation incluent (leur le wiki a des exemples exceptionnellement intéressants ):
Voir les meilleurs processus en termes d'utilisation de la bande passante du disque
sysdig -c topprocs_file
Énumérez les processus qui utilisent un grand nombre de fichiers
sysdig -c fdcount_by proc.name "fd.type = file"
Voir les meilleurs fichiers en termes d'octets de lecture + écriture
sysdig -c topfiles_bytes
Imprimez les principaux fichiers depuis lesquels Apache a lu ou écrit
sysdig -c topfiles_bytes proc.name = httpd
opensnoop de base: le fichier snoop s'ouvre au fur et à mesure
sysdig -p "% 12user.name% 6proc.pid% 12proc.name% 3fd.num% fd.typechar% fd.name" evt.type = open
Voir les meilleurs répertoires en termes d'activité du disque R + W
sysdig -c fdbytes_by fd.directory "fd.type = file"
Voir les meilleurs fichiers en termes d'activité du disque R + W dans le répertoire/tmp
sysdig -c fdbytes_by fd.filename "fd.directory =/tmp /"
Observez l'activité d'E/S sur tous les fichiers nommés 'passwd'
sysdig -A -c echo_fds "fd.filename = passwd"
Afficher l'activité d'E/S par type FD
sysdig -c fdbytes_by fd.type
dtrace existe pour linux ( https://github.com/dtrace4linux ) et http://crtags.blogspot.com .
Oracle porte DTrace vers Linux: https://oss.Oracle.com/projects/DTrace/
Je ne sais pas si cela ne fonctionne qu'avec leur distribution Linux ou toute autre.
Linux a strace/ltrace (voir cet article sur strace). Mais ils ne sont pas vraiment équivalents à DTrace, ils couvrent juste une petite partie de ce que DTrace peut faire (en fait, DTrace est largement supérieur à tout ce que Linux offre).