Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Utilize a Ferramenta de Diagnóstico de Desempenho do Azure para Java no Agente SRE do Azure para investigar problemas de desempenho da JVM no Serviço de Kubernetes do Azure (AKS). A ferramenta recolhe dados de perfil de uma carga de trabalho Java em execução e devolve resultados que ajudam a isolar gargalos sem desligar a aplicação.
Pré-requisitos
- Uma aplicação Java a correr num cluster AKS
- Um ambiente Azure SRE Agent que pode aceder ao cluster alvo
- Permissões para inspecionar a carga de trabalho e executar diagnósticos através do Azure SRE Agent
-
kubectlinstalado e configurado se quiseres adicionar a anotação da linha de comandos
Diagnósticos suportados
A Ferramenta de Diagnóstico de Desempenho do Azure para Java ajuda a identificar problemas tais como:
- Ineficiências na recolha de lixo e longas pausas
- Uso excessivo ou subuso do CPU
- Comportamento de uso intensivo de I/O que afeta o tempo de resposta
- Gargalos de contenção e sincronização de threads
Ativar diagnósticos Java
Para permitir diagnósticos, rotule a carga de trabalho como uma aplicação Java adicionando a anotação languageStack: java.
Adicione a anotação à especificação do seu pod
Adicione a anotação aos metadados do pod na definição da sua carga de trabalho:
apiVersion: v1
kind: Pod
metadata:
name: your-java-app
annotations:
languageStack: java
spec:
containers:
- name: app
image: your-java-app:latest
Adicione a anotação usando kubectl
Se o pod já estiver em execução, adicione a anotação a partir da linha de comandos.
kubectl annotate pod your-java-app languageStack=java
Quando adiciona esta anotação, confirma que:
- O pod está a correr uma aplicação Java.
- O Azure SRE Agent pode executar diagnósticos Java contra o pod.
Note
O processo de diagnóstico foi concebido para minimizar as perturbações, mas o Java Flight Recorder ainda acrescenta alguma sobrecarga. Valida a experiência num ambiente não produtivo antes de a usares em produção.
O que acontece durante uma execução de diagnóstico
Quando o Azure SRE Agent inicia uma execução de diagnóstico Java, ele:
- Cria um recipiente efémero no pod alvo.
- Anexa o contentor de diagnóstico ao contentor Java.
- Recolhe telemetria utilizando o Java Flight Recorder (JFR).
- Analisa os dados recolhidos.
- Remove o contentor de diagnóstico depois de a execução terminar.
Este processo mantém a candidatura online enquanto o Azure SRE Agent recolhe os dados necessários.
Sobre contentores efémeros
A Kubernetes mantém um registo dos contentores efémeros terminados. Se executar kubectl describe pod, continua a ver os contentores de diagnóstico concluídos após o fim da execução. Para reduzir o ruído, o Azure SRE Agent limita os diagnósticos a cinco contentores efémeros por pod.
Solicitar diagnóstico Java
Podes pedir diagnósticos manualmente, ou o Azure SRE Agent pode ativá-los quando detetar um provável problema de desempenho.
Execute um pedido de diagnóstico manual
No Azure SRE Agent, abra a experiência de chat e forneça os detalhes da carga de trabalho do serviço Java que pretende inspecionar:
Analyze the performance of:
pod: my-petclinic-app
container: spring-petclinic-rest
namespace: production
aks instance: my-aks-cluster
Inclua o nome do pod, nome do contentor, espaço de nomes e nome do cluster AKS para que o Azure SRE Agent possa direcionar a carga de trabalho correta.
Criar um subagente personalizado para diagnósticos Java
Se a sua equipa quiser um fluxo de trabalho dedicado ao diagnóstico, crie um subagente personalizado que encaminhe os pedidos para a ferramenta de diagnóstico Java.
Configurar o subagente
- No Azure SRE Agent, abra o Sub-Agent Builder.
- Selecionar Criar Novo Subagente.
- Adicione a configuração das ferramentas e o comportamento de transferência que deseja.
Exemplo de configuração:
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
Usar o subagente
Depois de criar o subagente, pode encaminhar um pedido a partir do 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
O subagente inicia o fluxo de trabalho de diagnóstico Java e devolve os resultados com os próximos passos recomendados.
Delegar diagnósticos nos alertas
Também pode encaminhar investigações orientadas por alertas para o subagente, para que o Azure SRE Agent possa iniciar um diagnóstico em Java como parte de um fluxo de resposta automatizado.
Interpretar os resultados de diagnóstico
Quando a análise termina, o Azure SRE Agent devolve resultados como:
- Identificação da causa raiz do principal gargalo
- Informações de diagnóstico, como tempos de pausa do GC ou tempos de espera de threads
- Recomendações para remediação
Use os resultados para:
- Ajustar os argumentos da JVM ou o tamanho do heap
- Otimizar os caminhos do código da aplicação
- Dimensionar recursos AKS
- Melhorar a monitorização e o alerta