Esta es la forma en que uso estas palabras. Otros pueden tener usos adicionales o diferentes. Dependiendo del trabajo en cuestión, usaré los términos de manera diferente. Los equipos de desarrollo y los equipos de operaciones tienen diferentes necesidades y usos.
Monitorear es monitorear. Por lo general, es continuo, y preferiblemente automatizado. Las herramientas de código abierto como Munin
, Nagios
y MRTG
entran en esta categoría. También hay muchas herramientas comerciales. También incluiría la sar
ejecución continua en esta categoría, pero sus resultados normalmente no se controlan. Las herramientas de monitoreo se pueden usar para activar alertas cuando un recurso monitoreado cae por encima o por debajo de un nivel de activación. Muchas herramientas de monitoreo funcionan bien en entornos heterogéneos.
La creación de perfiles generalmente se realiza en un programa en particular para ver qué código está utilizando la mayoría de los recursos. A menudo, este es el tiempo de CPU, pero también puede incluir memoria, E / S y tiempo de ejecución (pared). Por lo general, se usa para identificar el código candidato para la optimización. Las herramientas de creación de perfiles tienden a depender del idioma y / o la plataforma.
Se realiza un tipo diferente de creación de perfiles utilizando registros y / o datos de monitoreo. Este es un perfil de uso y se puede hacer por una variedad de razones. No he encontrado muchas herramientas para hacer esto.
Utilizo el rastreo de diferentes maneras. Con mayor frecuencia, trazo rutas de red. Dependiendo de la configuración de la red y el firewall, se pueden usar una variedad de herramientas con más o menos éxito. La mayoría de estos tienen traceroute en su nombre o descripción.
El rastreo de programas es rastrear la ejecución de un programa. Esto generalmente se hace en una situación de prueba. Esto se puede hacer de varias maneras (en mi orden de uso y experiencia):
- El rastreo de llamadas usando herramientas como
strace
para ver cómo se llama el código. Esto puede ser útil para determinar por qué un programa falla o no responde como se esperaba.
- Registro de nivel de seguimiento, que depende de las declaraciones de registro apropiadas que se incluyen en el código. La mayoría de las suites de registro admiten este nivel de detalle. El registro de nivel de seguimiento tiende a tener una cobertura de código pobre. Generalmente lo agrego según sea necesario y lo dejo en el código para uso futuro.
- El seguimiento de cobertura de código registra qué partes del código se han ejecutado en un conjunto de pruebas. Esto puede ser útil para determinar los casos de prueba faltantes. Es difícil obtener una cobertura del 100% del código. Se debe lograr una cobertura del 100% de los flujos normales.
- Comprobación de escritorio: seguimiento del código al leerlo. No es muy útil en programas más grandes, pero es una buena manera de identificar casos límite para pruebas unitarias, y / o identificar posibles problemas cuando la fuente probable se ha reducido. Algunos IDE y editores hacen que sea relativamente fácil seguir una llamada al código de implementación.
- Depuración en vivo; seguimiento de la ejecución del código mientras se ejecuta utilizando un depurador. Es posible rastrear la instrucción de ejecución por instrucción, pero si el problema es un problema de tiempo, puede quedar oculto. Los depuradores que pueden vincular el código a la instrucción actual ayudan mucho pero pueden requerir que se construya una versión de depuración del programa.