Solucionar problemas Java aplicativos no AKS com Azure SRE Agent

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
  • kubectl instalado 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:

  1. Cria um contêiner efêmero no pod de destino.
  2. Anexa o contêiner de diagnóstico ao contêiner de Java.
  3. Coleta telemetria usando Java Gravador de Voo (JFR).
  4. Analisa os dados capturados.
  5. 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

  1. Para abrir o Sub-Agent Builder, vá para o Azure SRE Agent.
  2. Selecione Criar Novo Sub-Agente.
  3. 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