En computación , SystemTap ( STAP ) es un lenguaje de script y herramienta de forma dinámica la instrumentación de la producción se ejecuta el núcleo de Linux basados en sistemas operativos . Los administradores del sistema pueden utilizar SystemTap para extraer, filtrar y resumir datos con el fin de permitir el diagnóstico de problemas funcionales o de rendimiento complejos.
Versión inicial | 2005 |
---|---|
Lanzamiento estable | 4.4 / 9 de noviembre de 2020 |
Repositorio | |
Escrito en | C , C ++ |
Sistema operativo | Linux |
Tipo | Rastreo del lenguaje de programación |
Licencia | Licencia pública general GNU |
Sitio web | sourceware |
SystemTap consiste en software gratuito y de código abierto e incluye contribuciones de Red Hat , IBM , Intel , Hitachi , Oracle , la Universidad de Wisconsin-Madison y otros miembros de la comunidad. [1]
Historia
SystemTap debutó en 2005 en Red Hat Enterprise Linux 4 Update 2 como una vista previa de la tecnología. [2]
Después de cuatro años en desarrollo, SystemTap 1.0 fue lanzado en 2009. [3]
A partir de 2011[actualizar], SystemTap se ejecuta totalmente compatible con todas las distribuciones de Linux, incluidas RHEL / CentOS 5 [4] desde la actualización 2, SLES 10, [5] Fedora, Debian y Ubuntu.
Los puntos de seguimiento en CPython VM y JVM se agregaron en SystemTap 1.2 en 2009. [6]
En noviembre de 2019, SystemTap 4.2 incluyó prometheus exporter.
Uso
Los archivos SystemTap están escritos en el lenguaje SystemTap [7] (guardados como .stp
archivos) y se ejecutan con la stap
línea de comandos. [8]
El sistema lleva a cabo una serie de análisis del script antes de permitir su ejecución. Los scripts se pueden ejecutar con uno de los tres backends seleccionados por la --runtime=
opción. El valor predeterminado es un módulo de kernel cargable , que tiene la capacidad más completa para inspeccionar y manipular cualquier parte del sistema y, por lo tanto, requiere la mayor parte de los privilegios. Otro backend se basa en la biblioteca de análisis de programas dinámicos DynInst para instrumentar solo los programas de espacio de usuario del usuario y requiere el mínimo de privilegios. El backend más nuevo [9] se basa en código de bytes eBPF , está limitado a las capacidades del intérprete del kernel de Linux y requiere un nivel intermedio de privilegio. En cada caso, el módulo se descarga cuando el script ha terminado de ejecutarse.
Los scripts generalmente se enfocan en eventos (como iniciar o finalizar un script), puntos de prueba compilados como "puntos de rastreo" de Linux, o la ejecución de funciones o declaraciones en el kernel o en el espacio de usuario.
Algunas secuencias de comandos en "modo gurú" también pueden tener C incrustado, que puede ejecutarse con la -g
opción de línea de comandos. Sin embargo, se desaconseja el uso del modo guru, y cada versión de SystemTap incluye más puntos de prueba diseñados para eliminar la necesidad de scripts en modo guru. Se requiere el modo Guru para permitir que los scripts modifiquen el estado en el software instrumentado, como para aplicar algunos tipos de arreglos de seguridad de emergencia.
A partir de la versión 1.7 de SystemTap, el software implementa el nuevo grupo stapsys y el nivel de privilegios. [10]
Ejemplos sencillos
El siguiente script muestra todas las aplicaciones que configuran las opciones de socket TCP en el sistema, qué opciones se están configurando y si la opción se configuró correctamente o no.
# Mostrar opciones de configuración de sockets# Devolver habilitado o deshabilitado según el valor de la función optval getstatus ( optval ) { if ( optval == 1 ) return " enable " else return "disabled" }probe begin { print ( "\ nComprobando aplicaciones que configuran opciones de socket \ n" ) } # Establezca una opción de socket probe tcp . setsockopt { status = getstatus ( user_int ( $ optval )) printf ( "La aplicación '% s' (PID% d) es la opción de conexión% s% s ..." , execname () , pid () , status , optstr ) } # Compruebe el ajuste de opción de socket trabajó sonda TCP . setsockopt . return { if ( ret == 0 ) printf ( "exitoso" ) else printf ( "fallido" ) printf ( "\ n" ) }fin de la sonda { print ( "\ nCierre \ n" ) }
Muchos otros ejemplos se envían con SystemTap. [11] También hay ejemplos del mundo real del uso de SystemTap en la página de Historias de guerra. [12]
Importación de scripts de otras tecnologías de rastreo
SystemTap se puede adjuntar a los marcadores de DTrace cuando se compilan en una aplicación utilizando macros del sys/sdt.h
archivo de encabezado.
Ver también
Referencias
- ^ "Una actualización de SystemTap" . LWN.net .
- ^ "Documentación de producto para Red Hat Enterprise Linux" . Red Hat .
- ^ "Josh Stone - SystemTap versión 1.0" .
- ^ "Documentación del producto" . Red Hat .
- ^ 60951 (10 de octubre de 2006). "Actualización opcional para SystemTap" . Novell .CS1 maint: nombres numéricos: lista de autores ( enlace )
- ^ "Características / SystemtapStaticProbes - FedoraProject" . Fedoraproject.
- ^ https://sourceware.org/systemtap/langref/
- ^ Comparar Romanos, Robb (2009). "SystemTap Language Reference: una guía de las construcciones y la sintaxis utilizadas en los scripts de SystemTap". Red Hat: 4. CiteSeerX 10.1.1.172.5186 .
SystemTap requiere [...] privilegios de root para ejecutar realmente los objetos del kernel que compila usando el comando sudo, aplicado al programa [...] staprun. Staprun es una parte del paquete SystemTap, dedicado a la carga y descarga de módulos y al kernel -transferencia de datos al usuario.
Cite journal requiere|journal=
( ayuda ) - ^ Merey, Aaron (18 de octubre de 2017). "versión de systemtap 3.2" . Consultado el 18 de octubre de 2017 .
El equipo de systemtap anuncia la versión 3.2 [...] backend experimental temprano eBPF (filtro de paquetes extendido de Berkeley) [...]
- ^ Eigler, Frank Ch. (1 de febrero de 2012). "Lanzamiento de systemtap 1.7" . Consultado el 26 de marzo de 2013 .
El equipo de systemtap anuncia la versión 1.7 [...] Se ha agregado el nuevo grupo y nivel de privilegio "stapsys" [...]
- ^ "Ejemplos de SystemTap" .
- ^ "WarStories - Systemtap Wiki" .
enlaces externos
- Página web oficial
- Wiki de SystemTap
- Referencia del lenguaje SystemTap ( PDF )
- Análisis del proyecto SystemTap por Ohloh
- Seguimiento dinámico con DTrace y SystemTap
- Tutorial de Systemtap Frank Ch. Eigler
- Guía para principiantes de SystemTap Don Domingo, William Cohen
- Resolución de problemas con Systemtap , Ottawa Linux Symposium 2006
- Resolución de problemas con SystemTap , Eugene Teo, presentado en Red Hat Summit 2007 ( scripts )
- Seguimiento dinámico y análisis de rendimiento con SystemTap , Joshua Stone, presentado en la LinuxWorld Conference 2008
- Tutorial de SystemTap , Jim Keniston, presentado en la Linux Plumbers Conference 2008