Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Utilice la herramienta de diagnóstico de rendimiento de Azure para Java en el agente SRE de Azure para investigar problemas de rendimiento de JVM en Azure Kubernetes Service (AKS). La herramienta recopila datos de generación de perfiles de una carga de trabajo de Java en ejecución y devuelve resultados que le ayudan a aislar cuellos de botella sin desconectar la aplicación.
Prerrequisitos
- Una aplicación de Java que se ejecuta en un clúster de AKS
- Un entorno del agente de SRE de Azure que puede acceder al clúster de destino
- Permisos para inspeccionar la carga de trabajo y ejecutar diagnósticos mediante Azure agente de SRE
-
kubectlinstalado y configurado si desea agregar la anotación desde la línea de comandos
Diagnósticos compatibles
Azure Herramienta de diagnóstico de rendimiento para Java ayuda a identificar problemas como:
- Ineficiencias de recolección de basura y pausas largas
- Uso excesivo de CPU o uso bajo
- Comportamiento intensivo de E/S que afecta al tiempo de respuesta
- Conflicto entre subprocesos y cuellos de botella en la sincronización
Habilitación de diagnósticos de Java
Para habilitar los diagnósticos, etiquete la carga de trabajo como una aplicación de Java agregando la anotación languageStack: java.
Añade la anotación a la especificación del pod
Agregue la anotación a los metadatos del pod en la definición de su carga de trabajo.
apiVersion: v1
kind: Pod
metadata:
name: your-java-app
annotations:
languageStack: java
spec:
containers:
- name: app
image: your-java-app:latest
Adición de la anotación mediante kubectl
Si el pod ya se está ejecutando, agregue la anotación desde la línea de comandos:
kubectl annotate pod your-java-app languageStack=java
Al agregar esta anotación, confirme que:
- El pod ejecuta una aplicación de Java.
- Azure SRE Agent puede ejecutar diagnósticos de Java en el pod.
Note
El proceso de diagnóstico está diseñado para minimizar la interrupción, pero Java Flight Recorder sigue añadiendo cierta sobrecarga. Valide la experiencia en un entorno que no sea de producción antes de usarla en producción.
Qué ocurre durante una ejecución de diagnóstico
Cuando el agente de SRE de Azure inicia una ejecución de diagnóstico de Java, hace lo siguiente:
- Crea un contenedor efímero en el pod de destino.
- Asocia el contenedor de diagnóstico al contenedor de Java.
- Recopila datos de telemetría mediante Java Flight Recorder (JFR).
- Analiza los datos capturados.
- Elimina el contenedor de diagnóstico después de que se complete la ejecución.
Este proceso mantiene la aplicación en línea mientras Azure agente de SRE recopila los datos que necesita.
Acerca de los contenedores efímeros
Kubernetes mantiene un registro de contenedores efímeros terminados. Si ejecuta kubectl describe pod, seguirá viendo los contenedores de diagnóstico completados una vez finalizada la ejecución. Para reducir el ruido, Azure SRE Agent limita los diagnósticos a cinco contenedores efímeros por pod.
Solicitud de diagnóstico de Java
Puede solicitar diagnósticos manualmente o Azure agente SRE puede desencadenarlos cuando detecta un problema de rendimiento probable.
Ejecución de una solicitud de diagnóstico manual
En Azure agente de SRE, abra la experiencia de chat y proporcione los detalles de la carga de trabajo para el servicio Java que desea inspeccionar:
Analyze the performance of:
pod: my-petclinic-app
container: spring-petclinic-rest
namespace: production
aks instance: my-aks-cluster
Incluya el nombre del pod, el nombre del contenedor, el espacio de nombres y el nombre del clúster de AKS para que Azure agente de SRE pueda tener como destino la carga de trabajo correcta.
Creación de un subagente personalizado para diagnóstico de Java
Si el equipo quiere un flujo de trabajo de diagnóstico dedicado, cree un subagente personalizado que enrute las solicitudes a la herramienta de diagnóstico de Java.
Configuración del subagente
- En Azure SRE Agent, abra Sub-Agent Builder.
- Seleccione Crear nuevo subagente.
- Agregue la configuración de las herramientas y el comportamiento de entrega que desee.
Configuración de ejemplo:
api_version: azuresre.ai/v1
kind: AgentConfiguration
spec:
name: AKSDiagnosticAgent
system_prompt: >-
Take the details of a diagnostic analysis to be performed on an AKS container
and hand off to the appropriate diagnostic tool. If you need to find the resource
to diagnose, use the SearchResourceByName and ListResourcesByType tools.
tools:
- GetCPUAnalysis
- GetMemoryAnalysis
- SearchResourceByName
- ListResourcesByType
- AnalyzeJavaAppInAKSContainer
handoff_description: >-
Use this agent when the user requests an AKS diagnostic analysis or when the
investigation requires a Java diagnostics run.
agent_type: Autonomous
Uso del subagente
Después de crear el subagente, puede dirigirle una solicitud desde el chat:
/agent AKSDiagnosticAgent I am having a performance issue in:
pod: illuminate-test-petclinic
container: spring-petclinic-rest
namespace: illuminate-test
aks instance: jeg-aks
El subagente inicia el flujo de trabajo de diagnóstico de Java y devuelve los resultados con los pasos siguientes recomendados.
Delegar el diagnóstico de alertas
También puede dirigir las investigaciones impulsadas por alertas al subagente para que el Agente de SRE de Azure pueda iniciar una ejecución de diagnósticos de Java como parte de un flujo de respuesta automatizado.
Interpretación de los resultados de diagnóstico
Cuando finalice el análisis, Azure agente de SRE devuelve resultados como:
- Identificación de la causa raíz del cuello de botella principal
- Información de diagnóstico , como tiempos de pausa de GC o tiempos de espera de subprocesos
- Recomendaciones para la corrección
Use los resultados para:
- Ajustar los argumentos de JVM o el tamaño del montón
- Optimizar las rutas de acceso del código de la aplicación
- Escalado de recursos de AKS
- Mejora de la supervisión y las alertas