Instrumentalización de aplicaciones en tiempo de ejecución con el instrumentador binario
Puede utilizar el instrumentador binario para recopilar datos de aplicación. Ejecutar su aplicación con la instrumentación activada es un primer paso en la refactorización de sus aplicaciones monolíticas Java® en particiones.
El instrumentador binario (minerva-agent-1.0.jar
) es un agente basado en Javaque instrumenta el código de bytes de las aplicaciones monolíticas Java para que los rastreos de tiempo de ejecución se recopilen cuando se ejecuten estas aplicaciones. El instrumenter binario inyecta dinámicamente sentencias de instrumentación en forma de System.err.println("Entering...")
y System.err.println("Exiting...")
en todos los métodos de clase, incluidos los constructores.
El instrumenter utiliza tres archivos JSON creados por el analizador de código cuando exploró los archivos de origen Java de la aplicación. Los archivos JSON contienen metadatos sobre las clases exploradas y la configuración del instrumentador binario. Los metadatos incluyen información como nombres de clase, sus atributos de miembro especificados, constructores, métodos con argumentos de entrada y tipos de retorno y ubicaciones de archivo de origen de las clases.
El instrumentador binario nunca imprime el valor de las variables de la aplicación. El propósito de la instrumentación es registrar los flujos temporales a través de varios métodos y constructores de clases, y no los valores de ninguna variable durante el tiempo de ejecución.
Requisitos previos
Asegúrese de cumplir los requisitos del sistema y los siguientes requisitos.
- Su aplicación está instalada y funcionando en un servidor como WebSphere® Application Server o Liberty.
- Ejecute el analizador de código.
Procedimiento
Después de ejecutar el analizador de código, verifique que tiene un directorio que contiene los tres archivos JSON que se han creado.
- El archivo symTable.json
- El archivo refTable.json
- El archivo instrumenter-config.json
Si copia estos archivos JSON en otra ubicación, asegúrese de mantenerlos agrupados en el mismo directorio.
Configure el servidor de aplicaciones añadiendo el argumento siguiente a su máquina virtual Java (JVM).
-javaagent:<agent-install-path>/minerva-agent-1.0.jar=<agent-config-path>
Sustituya las variables por vías de acceso de directorio. Asegúrese de que utiliza el carácter separador de vía de acceso adecuado para el sistema operativo.
- <agent-install-path> es la vía de acceso completa del directorio que contiene el archivo minerva-agent-1.0.jar , que se incluye en el paquete descargable de Mono2Micro-CLI.zip .
- <agent-config-path> es la vía de acceso completa del directorio que contiene los tres archivos JSON creados por el analizador de código.
Por ejemplo, si ha extraído Mono2Micro-CLI.zip en /m2m-cli/, <agent-install-path> es /m2m-cli/instrumenter y <agent-config-path> es ~/myapp/src-mono2micro/, debe configurar el servidor de aplicaciones añadiendo el argumento siguiente a su JVM.
-javaagent:/m2m-cli/instrumenter/minerva-agent-1.0.jar=~/myapp/src-mono2micro/
Si su aplicación está instalada y ejecutándose en WebSphere Application Server puede utilizar la consola administrativa para especificar el argumento JVM.
Si su aplicación está instalada y ejecutándose en Liberty, cree o actualice un archivo jvm.options para especificar el argumento JVM.
- Inicie el servidor de aplicaciones y la aplicación con el argumento JVM de -javaagent habilitado.
Resultados
La salida de rastreo se añade a uno o más archivos de registro.
Qué hacer a continuación
Despliegue la aplicación en entornos no de producción pero representativos. Siga el mismo proceso que utiliza para desplegar la aplicación. En función de los entornos, las aplicaciones pueden estar en máquinas nativas, máquinas virtuales o contenedores.
Cuando las aplicaciones monolíticas Java se ejecutan con el instrumenter binario habilitado, se generan los archivos de rastreo de tiempo de ejecución. Utilice la información del analizador de código, la instrumentación binaria y el registrador de casos de uso como entrada para el motor de IA, que genera recomendaciones de partición.