stringtranslate.com

SistemaTap

En informática , SystemTap ( stap ) es un lenguaje de programación y una herramienta para instrumentar dinámicamente sistemas operativos Linux en producción . Los administradores de sistemas pueden utilizar SystemTap para extraer, filtrar y resumir datos con el fin de permitir el diagnóstico de problemas complejos de rendimiento o funcionales.

SystemTap consta de 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 de desarrollo, SystemTap 1.0 se lanzó en 2009. [3]

A partir de 2011 , SystemTap es 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 la VM y JVM CPython se agregaron en SystemTap 1.2 en 2009. [6]

En noviembre de 2019, SystemTap 4.2 incluyó el exportador Prometheus .

Uso

Los archivos SystemTap se escriben en el lenguaje SystemTap [7] (se guardan como .stparchivos) y se ejecutan con la staplínea de comandos. [8]

El sistema realiza una serie de pases de análisis en el script antes de permitir que se ejecute. 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ía de los privilegios. Otro backend se basa en la biblioteca de análisis de programas dinámicos DynInst para instrumentar solo los programas del espacio de usuario del usuario y requiere el mínimo privilegio. El backend más nuevo [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 terminado de ejecutarse.

Los scripts generalmente se centran en eventos (como iniciar o finalizar un script), puntos de prueba compilados como los "puntos de seguimiento" de Linux, o la ejecución de funciones o declaraciones en el núcleo o el espacio del usuario.

Algunos scripts en "modo gurú" también pueden tener C integrado, que puede ejecutarse con la -gopción de línea de comandos. Sin embargo, no se recomienda el uso del modo gurú y cada versión de SystemTap incluye más puntos de prueba diseñados para eliminar la necesidad de scripts en modo gurú. El modo gurú es necesario para permitir que los scripts modifiquen el estado del software instrumentado, como por ejemplo para aplicar algunos tipos de 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 del socket TCP en el sistema, qué opciones se están configurando y si la opción se configura correctamente o no.

# Mostrar opciones de configuración de sockets# Devuelve habilitado o deshabilitado según el valor de la función optval getstatus ( optval ) { if ( optval == 1 ) return "enabling" else return "disabling" }            sonda comienza { imprimir ( "\nComprobando si hay opciones de socket de configuración de aplicaciones\n" ) }  # Establecer una opción de socket probe tcp . setsockopt { status = getstatus ( user_int ( $ optval )) printf ( " La aplicación '%s' (PID %d) es %s la opción de socket %s... " , execname ( ) , pid () , status , optstr ) } # Verificar que la configuración de la opción de socket funcionó probe tcp . setsockopt . return { if ( ret == 0 ) printf ( "éxito" ) else printf ( "error" ) printf ( "\n" ) }                                fin de la sonda { print ( "\nCerrando\n" ) } 

Se incluyen muchos otros ejemplos con SystemTap. [11] También hay ejemplos reales del uso de SystemTap en la página Historias de guerra. [12]

Importación de scripts desde otras tecnologías de rastreo

SystemTap puede adjuntarse a los marcadores DTrace cuando se compilan en una aplicación utilizando macros del sys/sdt.harchivo de encabezado.

Véase también

Referencias

  1. ^ "Una actualización de SystemTap". LWN.net .
  2. ^ "Documentación del producto para Red Hat Enterprise Linux". Red Hat .
  3. ^ "Josh Stone - Versión 1.0 de SystemTap".
  4. ^ "Documentación del producto". Red Hat .
  5. ^ "Actualización opcional para SystemTap". Novell . 10 de octubre de 2006.
  6. ^ "Características/SystemtapStaticProbes - FedoraProject". Proyecto Fedora.
  7. ^ "Referencia del lenguaje SystemTap".
  8. ^ 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 los objetos del núcleo que crea utilizando el comando sudo, aplicado al programa staprun.[...] staprun es una parte del paquete SystemTap, dedicado a la carga y descarga de módulos y a la transferencia de datos del núcleo al usuario.  {{cite journal}}: Requiere citar revista |journal=( ayuda )
  9. ^ Merey, Aaron (18 de octubre de 2017). "lanzamiento de systemtap 3.2" . Consultado el 18 de octubre de 2017 . El equipo de systemtap anuncia el lanzamiento 3.2 [...] backend experimental temprano de eBPF (filtro de paquetes Berkeley extendido) [...][ enlace muerto permanente ]
  10. ^ 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 el lanzamiento de la versión 1.7 [...] Se ha añadido el nuevo grupo y nivel de privilegio "stapsys" [...]
  11. ^ "Ejemplos de SystemTap".
  12. ^ "Historias de guerra - Wiki de Systemtap".

Enlaces externos