Memecahkan masalah aplikasi Java di AKS dengan agen SRE Azure

Gunakan Alat Diagnostik Performa Azure untuk Java di Agen SRE Azure untuk menyelidiki masalah performa JVM di Azure Kubernetes Service (AKS). Alat ini mengumpulkan data pembuatan profil dari beban kerja Java yang sedang berjalan dan mengembalikan temuan yang membantu Anda mengisolasi hambatan tanpa membuat aplikasi offline.

Prerequisites

  • Aplikasi Java yang berjalan di kluster AKS
  • Lingkungan Agen SRE Azure yang dapat mengakses kluster target
  • Izin untuk memeriksa beban kerja dan menjalankan diagnostik melalui agen SRE Azure
  • kubectl diinstal dan dikonfigurasi jika Anda ingin menambahkan anotasi dari baris perintah

Diagnostik yang didukung

Azure Alat Diagnostik Performa untuk Java membantu mengidentifikasi masalah seperti:

  • Ketidakefisienan pengumpulan sampah dan jeda panjang
  • Penggunaan CPU berlebihan atau kurang digunakan
  • Perilaku yang bergantung pada I/O yang memengaruhi waktu respons
  • Kontensi utas dan kemacetan sinkronisasi

Mengaktifkan diagnostik Java

Untuk mengaktifkan diagnostik, beri label beban kerja sebagai aplikasi Java dengan menambahkan anotasi languageStack: java.

Tambahkan anotasi ke spesifikasi pod Anda

Tambahkan anotasi ke metadata pod dalam definisi beban kerja Anda:

apiVersion: v1
kind: Pod
metadata:
  name: your-java-app
  annotations:
    languageStack: java
spec:
  containers:
    - name: app
      image: your-java-app:latest

Menambahkan anotasi dengan menggunakan kubectl

Jika pod sudah berjalan, tambahkan anotasi dari baris perintah:

kubectl annotate pod your-java-app languageStack=java

Saat Anda menambahkan anotasi ini, Anda mengonfirmasi bahwa:

  • Pod menjalankan aplikasi Java.
  • Azure SRE Agent dapat menjalankan diagnostik Java terhadap pod.

Note

Proses diagnostik dirancang untuk meminimalkan gangguan, tetapi Java Flight Recorder masih menambahkan beberapa overhead. Validasi pengalaman di lingkungan nonproduksi sebelum Anda menggunakannya dalam produksi.

Apa yang terjadi selama proses diagnostik

Saat Azure SRE Agent memulai eksekusi diagnostik Java, agen tersebut:

  1. Membuat wadah ephemeral di pod target.
  2. Melampirkan kontainer diagnostik ke kontainer Java.
  3. Mengumpulkan telemetri dengan menggunakan Java Flight Recorder (JFR).
  4. Menganalisis data yang diambil.
  5. Menghapus kontainer diagnostik setelah proses selesai.

Proses ini membuat aplikasi tetap online saat Azure Agen SRE mengumpulkan data yang dibutuhkannya.

Tentang kontainer sementara

Kubernetes menyimpan catatan kontainer ephemeral yang dihentikan. Jika Anda menjalankan kubectl describe pod, Anda akan terus melihat kontainer diagnostik yang sudah selesai setelah eksekusi berakhir. Untuk mengurangi kebisingan, Azure SRE Agent membatasi proses diagnostik hingga lima kontainer sementara per pod.

Meminta diagnostik Java

Anda dapat meminta diagnostik secara manual, atau Azure SRE Agent dapat memicunya saat mendeteksi kemungkinan masalah performa.

Menjalankan permintaan diagnostik manual

Di Azure SRE Agent, buka pengalaman obrolan dan berikan detail beban kerja untuk layanan Java yang ingin Anda periksa:

Analyze the performance of:
pod: my-petclinic-app
container: spring-petclinic-rest
namespace: production
aks instance: my-aks-cluster

Sertakan nama pod, nama kontainer, namespace layanan, dan nama kluster AKS sehingga Azure Agen SRE dapat menargetkan beban kerja yang benar.

Membuat sub-agen kustom untuk diagnostik Java

Jika tim Anda menginginkan alur kerja diagnostik khusus, buat sub-agen kustom yang merutekan permintaan ke alat diagnostik Java.

Mengonfigurasi sub-agen

  1. Di Azure SRE Agent, buka Sub-Agent Builder.
  2. Pilih Buat Sub-Agen Baru.
  3. Tambahkan konfigurasi dari alat dan perilaku pengalihan yang Anda inginkan.

Konfigurasi contoh:

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

Gunakan sub-agen

Setelah membuat sub-agen, Anda dapat mengarahkan permintaan ke sub-agen tersebut dari obrolan:

/agent AKSDiagnosticAgent I am having a performance issue in:
pod: illuminate-test-petclinic
container: spring-petclinic-rest
namespace: illuminate-test
aks instance: jeg-aks

Sub-agen memulai alur kerja diagnostik Java dan mengembalikan temuan dengan langkah berikutnya yang direkomendasikan.

Mendelegasikan diagnostik dari peringatan

Anda juga dapat merutekan investigasi berbasis pemberitahuan ke sub-agen sehingga Azure Agen SRE dapat memulai diagnostik Java yang dijalankan sebagai bagian dari alur respons otomatis.

Menginterpretasikan hasil diagnostik

Setelah analisis selesai, Azure Agen SRE mengembalikan hasil seperti:

  • Identifikasi akar penyebab untuk hambatan utama
  • Wawasan diagnostik seperti durasi jeda GC atau durasi tunggu thread
  • Rekomendasi untuk remediasi

Gunakan hasilnya untuk:

  • Sesuaikan argumen JVM atau ukuran heap
  • Mengoptimalkan jalur kode aplikasi
  • Menskalakan sumber daya AKS
  • Meningkatkan pemantauan dan pemberitahuan

Langkah berikutnya