En informática , SystemTap ( stap ) es un lenguaje de scripting y una herramienta para instrumentar dinámicamente sistemas operativos Linux en producción . Los administradores de sistemas pueden usar SystemTap para extraer, filtrar y resumir datos, lo que permite diagnosticar problemas complejos de rendimiento o funcionamiento.
SystemTap consta de software libre 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 tecnológica. [ 2 ]
Después de cuatro años de desarrollo, SystemTap 1.0 fue lanzado en 2009. [ 3 ]
A partir de 2011, SystemTap funciona con soporte completo en 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 rastreo en la máquina virtual CPython y la JVM se agregaron en SystemTap 1.2 en 2009. [ 6 ]
En noviembre de 2019, SystemTap 4.2 incluyó el exportador de Prometheus .
Uso
Los archivos SystemTap están escritos en el lenguaje SystemTap [ 7 ] (guardados como .stparchivos) y se ejecutan con la staplínea de comandos. [ 8 ]
El sistema realiza varias pasadas de análisis sobre el script antes de permitir su ejecución. Los scripts pueden ejecutarse con uno de los tres backends seleccionados mediante la --runtime=opción. El predeterminado es un módulo del kernel cargable , que tiene la capacidad más completa para inspeccionar y manipular cualquier parte del sistema y, por lo tanto, requiere el máximo privilegio. Otro backend se basa en la biblioteca de análisis de programas dinámicos DynInst para instrumentar únicamente los programas del espacio de usuario del propio usuario y requiere el mínimo privilegio. El backend más reciente [ 9 ] se basa en el 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 finalizado su ejecución.
Los scripts generalmente se centran en eventos (como iniciar o finalizar un script), puntos de sondeo compilados, como los "puntos de rastreo" de Linux, o la ejecución de funciones o instrucciones en el núcleo o en el espacio de usuario.
Algunos scripts en modo "gurú" pueden contener código C integrado, que se puede ejecutar mediante la -gopción de línea de comandos. Sin embargo, se desaconseja el uso del modo gurú, y cada versión de SystemTap incluye más puntos de sondeo diseñados para eliminar la necesidad de scripts en este modo. El modo gurú es necesario para permitir que los scripts modifiquen el estado del software instrumentado, por ejemplo, para aplicar correcciones 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 privilegio. [ 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 configuración se realizó correctamente o no.
# Mostrar opciones de configuración de enchufes# Devuelve habilitado o deshabilitado según el valor de optval function getstatus ( optval ) { if ( optval == 1 ) return "habilitando" else return "deshabilitando" }probe begin { print ( "\nComprobando las opciones de configuración de sockets de las aplicaciones\n" ) }# Establecer una opción de socket probe tcp . setsockopt { status = getstatus ( user_int ( $ optval )) printf ( " La aplicación '%s' (PID %d) tiene la opción de socket %s... " , execname () , pid () , status , optstr ) } # Comprobar que la configuración de la opción de socket funcionó probe tcp . setsockopt . return { if ( ret == 0 ) printf ( "Éxito" ) else printf ( "Falló" ) printf ( "\n" ) }fin de la sonda { imprimir ( "\nCerrando\n" ) }SystemTap incluye muchos otros ejemplos. [ 11 ] También hay ejemplos reales del uso de SystemTap en la página de Historias de guerra. [ 12 ]
Importación de scripts de otras tecnologías de rastreo
SystemTap puede conectarse a los marcadores DTrace cuando estos se compilan en una aplicación utilizando macros del sys/sdt.harchivo de cabecera.
Véase también
Referencias
- ↑ "Una actualización de SystemTap" . LWN.net .
- ↑ "Documentación del producto para Red Hat Enterprise Linux" . Red Hat .
- ↑ "Josh Stone - SystemTap versión 1.0" .
- ↑ "Documentación del producto" . Red Hat .
- ↑ "Actualización opcional para SystemTap" . Novell . 10 de octubre de 2006.
- ↑ "Características/SystemtapStaticProbes - FedoraProject" . Fedoraproject.
- ↑ "Referencia del lenguaje SystemTap" .
- ↑ Comparar Romans, Robb (2009). "SystemTap Language Reference: A guide to the constructs and syntax used in SystemTap scripts". Red Hat: 4. CiteSeerX 10.1.1.172.5186 .
SystemTap [...] requiere privilegios de root para ejecutar realmente los objetos del kernel que crea usando el comando sudo, aplicado al programa staprun.[...] staprun es parte del paquete SystemTap, dedicado a la carga y descarga de módulos y a la transferencia de datos del kernel al usuario.
{{cite journal}}: Para citar una revista se requiere|journal=( ayuda ) - ↑ Merey, Aaron (18 de octubre de 2017). "Lanzamiento de systemtap 3.2" . Recuperado el 18 de octubre de 2017.
El equipo de systemtap anuncia el lanzamiento de la versión 3.2 [...] backend experimental temprano de eBPF (filtro de paquetes Berkeley extendido) [...]
- ↑ Eigler, Frank Ch. (1 de febrero de 2012). "Systemtap 1.7 release" . Recuperado el 26 de marzo de 2013.
El equipo de Systemtap anuncia la versión 1.7 [...] Se ha añadido el nuevo grupo y nivel de privilegio "stapsys" [...]
- ↑ "Ejemplos de SystemTap" .
- ↑ "Historias de guerra - Wiki de Systemtap" .
Enlaces externos
- Sitio web oficial
- Wiki de SystemTap
- Referencia del lenguaje SystemTap ( PDF )
- Análisis del proyecto SystemTap realizado por Ohloh
- Rastreo dinámico con DTrace y SystemTap
- Tutorial de Systemtap por Frank Ch. Eigler
- Guía para principiantes de SystemTap, de Don Domingo y William Cohen.
- Resolución de problemas con Systemtap , Simposio Linux de Ottawa. Archivado el 13 de septiembre de 2008 en Wayback Machine 2006.
- Resolución de problemas con SystemTap Archivado el 22/02/2012 en Wayback Machine , Eugene Teo, presentado en la Cumbre de Red Hat 2007 ( scripts )
- Análisis dinámico de rendimiento y seguimiento mediante SystemTap , por Joshua Stone, presentado en la conferencia LinuxWorld 2008.
- Tutorial de SystemTap , Jim Keniston, presentado en la Conferencia Linux Plumbers 2008.
- Software libre programado en C++
- Software de sistema gratuito
- Depuradores
- Características del kernel de Linux
- Software libre exclusivo para Linux