Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use a Ferramenta de Diagnóstico de Desempenho do Azure para Java no Agente Azure SRE para investigar problemas de desempenho de JVM no AKS (Serviço de Kubernetes do Azure). A ferramenta coleta dados de criação de perfil de uma carga de trabalho de Java em execução e retorna descobertas que ajudam você a isolar gargalos sem colocar o aplicativo offline.
Pré-requisitos
- Um aplicativo Java em execução em um cluster do AKS
- Um ambiente do agente SRE Azure que pode acessar o cluster de destino
- Permissões para inspecionar a carga de trabalho e executar o diagnóstico por meio do agente Azure SRE
-
kubectlinstalado e configurado se você quiser adicionar a anotação pela linha de comando
Diagnósticos suportados
Azure Ferramenta de Diagnóstico de Desempenho para Java ajuda a identificar problemas como:
- Ineficiências de coleta de lixo e pausas longas
- Uso excessivo ou subutilização da CPU
- Comportamento intensivo de entrada/saída que afeta o tempo de resposta
- Gargalos de contenção e sincronização de threads
Habilitar o diagnóstico de Java
Para habilitar o diagnóstico, rotule a carga de trabalho como um aplicativo Java adicionando a anotação languageStack: java.
Adicione a anotação à especificação do pod
Adicione a anotação aos metadados do pod na definição da carga de trabalho:
apiVersion: v1
kind: Pod
metadata:
name: your-java-app
annotations:
languageStack: java
spec:
containers:
- name: app
image: your-java-app:latest
Adicionar a anotação usando kubectl
Se o pod já estiver em execução, adicione a anotação da linha de comando:
kubectl annotate pod your-java-app languageStack=java
Ao adicionar essa anotação, você confirma que:
- O pod está executando um aplicativo Java.
- O Agente SRE do Azure pode executar diagnósticos em Java no pod.
Note
O processo de diagnóstico foi projetado para minimizar as interrupções, mas o Java Flight Recorder ainda adiciona alguma sobrecarga. Valide a experiência em um ambiente de não produção antes de usá-la em produção.
O que acontece durante uma execução de diagnóstico
Quando Azure agente SRE inicia uma execução de diagnóstico de Java, ele:
- Cria um contêiner efêmero no pod de destino.
- Anexa o contêiner de diagnóstico ao contêiner de Java.
- Coleta telemetria usando Java Gravador de Voo (JFR).
- Analisa os dados capturados.
- Remova o contêiner de diagnóstico após o término da execução.
Esse processo mantém o aplicativo online enquanto Azure agente SRE coleta os dados necessários.
Sobre contêineres efêmeros
O Kubernetes mantém um registro de contêineres efêmeros encerrados. Se executar kubectl describe pod, você continuará a ver contêineres de diagnóstico concluídos depois que a execução terminar. Para reduzir o ruído, o Agente SRE do Azure limita o recurso de diagnóstico a cinco contêineres efêmeros por Pod.
Solicitar diagnóstico de Java
Você pode solicitar o diagnóstico manualmente ou Azure agente SRE pode acioná-los quando detecta um problema de desempenho provável.
Executar uma solicitação de diagnóstico manual
Em Azure Agente SRE, abra a experiência de chat e forneça os detalhes da carga de trabalho para o serviço de Java que você deseja 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, o nome do contêiner, o namespace e o nome do cluster do AKS para que Azure agente SRE possa direcionar a carga de trabalho correta.
Criar um subagente personalizado para diagnóstico de Java
Se sua equipe quiser um fluxo de trabalho de diagnóstico dedicado, crie um subagente personalizado que encaminhe solicitações para a ferramenta de diagnóstico Java.
Configurar o subagente
- Para abrir o Sub-Agent Builder, vá para o Azure SRE Agent.
- Selecione Criar Novo Sub-Agente.
- Adicione a configuração para as ferramentas e o comportamento de entrega desejados.
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, você pode direcionar uma solicitação para ele por meio 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 de Java e retorna descobertas com as próximas etapas recomendadas.
Delegar diagnóstico de alertas
Você também pode rotear investigações orientadas por alertas para o sub-agente, para que o Azure SRE Agent possa iniciar uma execução de diagnóstico em Java como parte de um fluxo de resposta automatizado.
Interpretar os resultados do diagnóstico
Quando a análise for concluída, Azure agente SRE retornará resultados como:
- Identificação de causa raiz para o gargalo principal
- Insights de diagnóstico , como tempos de pausa do GC ou tempos de espera de thread
- Recomendações para correção
Use os resultados para:
- Ajustar os argumentos JVM ou o tamanho do heap
- Otimizar caminhos de código do aplicativo
- Dimensionar recursos do AKS
- Melhorar o monitoramento e alertas
Próximas Etapas
- Saiba mais sobre as capacidades do Agente SRE do Azure
- Criar um subagente personalizado
- Configurar a automação de resposta a incidentes
- Configurar os ganchos de agente para fins de respostas automatizadas