stringtranslate.com

Rastreo (software)

El rastreo en ingeniería de software se refiere al proceso de captura y registro de información sobre la ejecución de un programa de software. Esta información es utilizada normalmente por programadores con fines de depuración y, además, según el tipo y el detalle de la información contenida en un registro de rastreo, por administradores de sistemas experimentados o personal de soporte técnico y por herramientas de monitoreo de software para diagnosticar problemas comunes con el software. [1] El rastreo es una preocupación transversal .

No siempre hay una distinción clara entre el seguimiento y otras formas de registro , excepto que el término seguimiento casi nunca se aplica al registro que es un requisito funcional de un programa (excluyendo, por lo tanto, el registro de datos de una fuente externa, como la adquisición de datos en un experimento de física de alta energía , y el registro de escritura anticipada ). Los registros que registran el uso del programa (como un registro de servidor ) o eventos del sistema operativo principalmente de interés para un administrador de sistema (ver, por ejemplo, Visor de eventos ) caen en un área gris terminológica.

El rastreo se utiliza principalmente para la detección de anomalías, el análisis de fallas, la depuración o el diagnóstico en sistemas de software distribuidos, como microservicios o funciones sin servidor. [2]

Rastreo de software

El rastreo de software es una herramienta que los desarrolladores utilizan para recopilar información para la depuración. Esta información se utiliza tanto durante los ciclos de desarrollo como después del lanzamiento. A diferencia del registro de eventos, el rastreo de software no suele tener el concepto de una "clase" de evento o un "código de evento". Otras razones por las que las soluciones de registro de eventos basadas en códigos de eventos no son adecuadas para el rastreo de software incluyen:

Herramientas

OpenTelemetry es un proyecto de código abierto de CNCF que proporciona soporte integral para el rastreo distribuido. [3] Algunos proveedores, incluidos Datadog , New Relic y Splunk , también ofrecen servicios SaaS de rastreo. [4]

Google y Meta han desarrollado sus propios marcos de seguimiento, a saber, Dapper y Canopy. [2]

Seguimiento específico de la aplicación

Seguimiento específico del sistema

En los sistemas operativos, el seguimiento se puede utilizar en situaciones (como el arranque ) donde algunas de las tecnologías utilizadas para proporcionar registro de eventos pueden no estar disponibles.

Linux ofrece capacidades de seguimiento a nivel de sistema y de usuario con marcadores de kernel y LTTng . ftrace también admite el seguimiento del kernel de Linux. syslog es otra herramienta en varios sistemas operativos para registrar y rastrear mensajes del sistema.

FreeBSD y SmartOS emplean DTrace para el seguimiento del kernel y del espacio de usuario.

En el software integrado , el rastreo también requiere técnicas especiales para una instrumentación y un registro eficientes y una baja sobrecarga de la CPU. [6]

Técnicas

Generación y recopilación de trazas

La generación de seguimiento de llamadas a métodos se puede realizar con instrumentación de código fuente, recopilación de información en tiempo de ejecución o bajo el control del depurador. [7] Se pueden emplear macros de seguimiento, programación orientada a aspectos y técnicas de instrumentación relacionadas.

Las bibliotecas utilizadas en el código fuente envían datos a un agente o directamente al componente de recopilación. [4]

Análisis de trazas

Para modelar árboles de ejecución, ISVis convierte un árbol raíz en un gráfico acíclico dirigido mientras que Jinsight utiliza el principio del marco de llamada para recopilar y representar información acumulativa sobre los rastros. [7]

El método de visualización principal es la vista de carriles, que se ejemplifica con herramientas como Jaeger y que a menudo incluye anotaciones y atributos clave-valor. A pesar de su uso generalizado, este diseño carece de una justificación rigurosa y los usuarios a menudo enfrentan desafíos como la falta de características y una navegación confusa. Existen alternativas a las vistas de carriles, como la vista de dependencia de servicios de Jaeger o las vistas de lista, árbol y tabla de SkyWalking. Las visualizaciones agregadas también se utilizan para analizar grandes volúmenes de rastros, con sistemas como Canopy que ofrecen métricas consultables y Jaeger que proporciona funciones de comparación de rastros. [8]

Registro de eventos

El registro de eventos proporciona a los administradores de sistemas información útil para diagnósticos y auditorías . Las diferentes clases de eventos que se registrarán, así como los detalles que aparecerán en los mensajes de eventos, suelen considerarse al principio del ciclo de desarrollo. Muchas tecnologías de registro de eventos permiten o incluso requieren que a cada clase de evento se le asigne un "código" único, que es utilizado por el software de registro de eventos o un visor independiente (por ejemplo, el Visor de eventos) para dar formato y generar un mensaje legible para humanos. Esto facilita la localización y permite a los administradores de sistemas obtener más fácilmente información sobre los problemas que ocurren.

Dado que el registro de eventos se utiliza para registrar información de alto nivel (a menudo, información sobre fallas), el rendimiento de la implementación del registro suele ser menos importante.

Una preocupación especial, evitar que se registren eventos duplicados "con demasiada frecuencia", se soluciona mediante la limitación de eventos.

Las dificultades para hacer una distinción clara entre el registro de eventos y el rastreo de software surgen del hecho de que se utilizan algunas de las mismas tecnologías para ambos, y además porque muchos de los criterios que distinguen entre ambos son continuos en lugar de discretos. La siguiente tabla enumera algunas distinciones importantes, pero de ninguna manera precisas o universales, que utilizan los desarrolladores para seleccionar tecnologías para cada propósito y que guían el desarrollo por separado de nuevas tecnologías en cada área:

Desafíos y limitaciones

La activación o desactivación del seguimiento durante el tiempo de ejecución suele requerir la inclusión de datos adicionales en el binario, lo que puede provocar una degradación del rendimiento, incluso cuando el seguimiento no está activo.

Si el seguimiento está habilitado o deshabilitado en el momento de la compilación , la recopilación de datos de seguimiento del sistema de un cliente depende de su voluntad y capacidad para instalar una versión del software específicamente habilitada para el seguimiento y, posteriormente, replicar el problema.

El rastreo en software generalmente exige altos estándares de robustez , no solo en la precisión y confiabilidad del resultado del rastreo, sino también para garantizar que el proceso que se rastrea permanezca ininterrumpido.

Dada su naturaleza de bajo nivel, el rastreo puede generar un gran volumen de mensajes. Para mitigar los problemas de rendimiento, a menudo es necesario tener la opción de desactivar el rastreo de software, ya sea en el momento de la compilación o durante el tiempo de ejecución.

Seguridad y privacidad

En el software propietario , los datos de seguimiento pueden incluir información confidencial sobre el código fuente del producto .

Véase también

Referencias

  1. ^ "El libro de trazado". Archivado desde el original el 24 de febrero de 2009.
  2. ^ ab Li, Bowen; Peng, Xin; Xiang, Qilin; Wang, Hanzhang; Xie, Tao; Sun, Jun; Liu, Xuanzhe (2022). "Disfrute de su observabilidad: una encuesta industrial sobre el seguimiento y análisis de microservicios". Ingeniería de software empírica . 27 (1): 25. doi :10.1007/s10664-021-10063-9. ISSN  1382-3256. PMC 8629732 . PMID  34867075. 
  3. ^ Mandel, Maya (7 de junio de 2023). "Publicación del Consejo: Seguimiento distribuido: la clave para la observabilidad de los microservicios". Forbes . Consultado el 12 de enero de 2024 .
  4. ^ ab Janes, Andrea; Li, Xiaozhou; Lenarduzzi, Valentina (2023). "Herramientas de rastreo abiertas: descripción general y comparación crítica". Revista de sistemas y software . 204 . Elsevier BV: 111793. arXiv : 2207.06875 . doi :10.1016/j.jss.2023.111793. ISSN  0164-1212.
  5. ^ "Puntos de seguimiento (depuración con GDB)". sourceware.org . Consultado el 24 de junio de 2022 .
  6. ^ Kraft, Johan; Wall, Anders; Kienle, Holger (2010), "Grabación de trazas para sistemas integrados: lecciones aprendidas de cinco proyectos industriales", Runtime Verification , Springer Berlin Heidelberg, págs. 315–329, doi :10.1007/978-3-642-16612-9_24, ISBN 9783642166112
  7. ^ ab Mertz, Jhonny; Nunes, Ingrid (2019). Sobre la viabilidad práctica de la monitorización de software: un marco para el seguimiento de la ejecución de bajo impacto. CASCON '04: Actas de la conferencia de 2004 del Centro de Estudios Avanzados sobre Investigación Colaborativa. IEEE. págs. 169–180. doi :10.1109/SEAMS.2019.00030. ISBN 978-1-7281-3368-3.
  8. ^ "Un estudio cualitativo de entrevistas sobre visualización de rastreo distribuido: una caracterización de desafíos y oportunidades". IEEE Xplore . 2023-02-01 . Consultado el 2024-01-12 .