Compartir vía


Introducción al agente de diagnóstico de Java

En este artículo se describe cómo empezar a usar el Agente de diagnóstico de Java. También describe la herramienta de diagnóstico de Java en el complemento de AKS para IntelliJ IDEA.

El agente de diagnóstico de Java es un agente de Java para solucionar problemas de un proceso de Java. No es necesario recompilar, volver a implementar ni reiniciar una aplicación. Actualmente, admite la adición de registros en torno a una función en una clase Java. Cuando se llama a la función , el registro se imprime junto con un cálculo del tiempo total consumido por la función.

Prerrequisitos

Establecer el reenvío de puertos

Utilice el siguiente comando para establecer la redirección de puertos al servicio del agente:

kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080

Uso de la herramienta de diagnóstico de Java en el complemento de AKS para IntelliJ IDEA

Puede usar la herramienta de diagnóstico de Java en el complemento de AKS para adjuntar el agente de diagnóstico de Java a la aplicación Java que se ejecuta en un contenedor de pods en un clúster de Azure Kubernetes Service (AKS).

Después de adjuntar el agente, le permite realizar tareas de solución de problemas, tales como la adición de registros en torno a una función de clase. Puede usar este registro para comprobar si se ejecuta la función y calcular el tiempo total invertido en la función. Este análisis puede ayudarle a localizar cuellos de botella de rendimiento en su aplicación.

La configuración del complemento se muestra en la pestaña de diagnóstico . Aquí puede realizar las siguientes tareas:

  • Configure el puerto local que reenvía al servicio del agente.
  • Visualice los pods listados con kubeconfig en su entorno local.
  • Seleccione Actualizar para actualizar la tabla de pods. Después de cambiar de cluster, debe refrescar la tabla para cargar los pods en el nuevo clúster.

Captura de pantalla de la pestaña Diagnóstico de IntelliJ IDEA.

Adjuntar el agente

El contenedor de pods debe tener una carpeta /tmp y debe tener permiso de escritura en la carpeta /tmp.

Para poder adjuntar el agente en la JVM, asegúrese de no añadir -XX:+DisableAttachMechanism a las opciones de la JVM.

El servidor de diagnóstico de back-end se cierra después de 6 horas.

Para adjuntar el agente, haga clic en el pod al que desea asociar el agente y, a continuación, seleccione el contenedor. Solo puede adjuntar el agente a un contenedor del pod. A continuación, espere a que se complete el proceso de adjunto.

Captura de pantalla de IntelliJ IDEA que muestra la pestaña Diagnóstico con el cuadro de diálogo Selección de contenedor abierto.

Establecer el contenedor del pod activo

Una vez que haya conectado el agente correctamente, puede usarlo para solucionar problemas.

Múltiples pods pueden haber inyectado el agente, por lo que debe establecer un pod activo. En IntelliJ IDEA, en la pestaña Diagnóstico, haga clic con el botón derecho en un pod y, a continuación, seleccione Seleccionar como el activo.

Captura de pantalla de la pestaña Diagnóstico de IntelliJ IDEA con un pod seleccionado y se muestra el elemento de menú Seleccionar como activo.

Añadir registros en una función de clase

El registro configurado se quita automáticamente después de 30 minutos.

Puede usar la herramienta para agregar registros en torno a funciones de clase, pero no interfaces, constructores, etc.

Para agregar registro a una función, haga clic con el botón derecho sobre esta en el editor y seleccione Diagnóstico de Java>Add AroundLog, como se muestra en la siguiente captura de pantalla.

Captura de pantalla de IntelliJ IDEA que muestra el menú contextual abierto para una función con la opción de menú Agregar AroundLog resaltada.

En este ejemplo, después de agregar el registro, puede llamar a <host>/infor para ver una salida similar al ejemplo siguiente antes y después de llamar a la función:

===== START ===== Method: updateInformation Start Time: 2024-12-12T07:37:55.404107848Z
Done with the validation
Done with the DB access
Done with the data filtering
===== END ===== Method: updateInformation End Time: 2024-12-12T07:37:55.404316940Z Total Time: 0 milliseconds

Eliminación de todos los registros configurados

Para eliminar todos los registros agregados por el agente, seleccione Eliminar Todos los AroundLogs.

Nota

El agente de Java backend es utilizado por un contenedor efímero en el pod. Una vez reiniciado el pod, se elimina el agente.

Solución de problemas

Se puede producir un tiempo de espera cuando se intenta adjuntar el agente a un pod que se ejecuta en un nodo que aún no ha habilitado la función. El tiempo de espera puede producirse porque el nodo debe recuperar primero la imagen del agente, lo que provoca un retraso. Cuando esto ocurre, puede seleccionar Actualizar para comprobar si el agente se ha asociado o puede intentar asociar el agente de nuevo.

Si se produce un error en los datos adjuntos, puede comprobar el registro denominado diagnostic-container-<hashcode> en el contenedor efímero.

Puede encontrar información sobre las operaciones del plugin en los registros del contenedor del pod denominado diag4j-agent-service-<hashcode>.

Paso siguiente

Introducción al componente administrador de Spring Boot de la herramienta de diagnóstico de Java (diag4j) en AKS