Bien démarrer avec l’agent de diagnostic Java

Cet article explique comment commencer à utiliser l’agent de diagnostic Java. Il décrit également l’outil de diagnostic Java sur le plug-in AKS pour IntelliJ IDEA.

L’agent de diagnostic Java est un agent Java pour résoudre les problèmes d’un processus Java. Il n’est pas nécessaire de reconstruire, redéployer ou redémarrer une application. Actuellement, il prend en charge l’ajout de logs à une fonction dans une classe Java. Lorsque la fonction est appelée, le journal est imprimé avec un calcul du temps total consommé par la fonction.

Conditions préalables

Établir le transfert de port

Utilisez la commande suivante pour établir le transfert de port vers le service agent :

kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080

Utiliser l’outil de diagnostic Java sur le plug-in AKS pour IntelliJ IDEA

Utilisez l’outil de diagnostic Java sur le plug-in AKS pour attacher l’agent de diagnostic Java à l’application Java s’exécutant dans un conteneur de pods sur un cluster Azure Kubernetes Service (AKS).

Après avoir attaché l’agent, vous pouvez résoudre les problèmes en ajoutant des journaux autour d’une fonction de classe. Utilisez ce journal pour tester si la fonction est exécutée et calculer le temps total passé dans la fonction. Cette analyse peut vous aider à localiser les goulots d’étranglement des performances dans votre application.

L’onglet Diagnostic affiche la configuration du plug-in. Ici, vous pouvez :

  • Configurez le port local qui transfère vers le service agent.
  • Affichez les pods répertoriés avec kubeconfig dans votre environnement local.
  • Sélectionnez Actualiser pour actualiser la table de pods. Après avoir changé de cluster, actualisez la table pour charger les pods dans un nouveau cluster.

La capture d’écran Capture d'écran de l'onglet Diagnostic d'IntelliJ IDEA.

Attachement de l'agent

Le conteneur de pods doit avoir un dossier /tmp et il doit avoir l’autorisation d’écriture dans le dossier /tmp .

Pour autoriser la liaison de l’agent à la JVM, n’ajoutez pas -XX:+DisableAttachMechanism aux options de la JVM.

Le serveur de diagnostic principal se ferme après 6 heures.

Pour joindre l’agent, sélectionnez le pod auquel vous souhaitez attacher l’agent, puis sélectionnez le conteneur. Vous ne pouvez attacher l’agent qu’à un seul conteneur dans le pod. Ensuite, attendez que le processus d'attachement se termine.

Capture d’écran d’IntelliJ IDEA montrant l’onglet Diagnostic avec la boîte de dialogue Sélection du conteneur ouverte.

Définir le conteneur de pod actif

Une fois que vous avez attaché l’agent avec succès, utilisez-le pour résoudre les problèmes.

Plusieurs pods peuvent avoir injecté l’agent. Vous devez donc définir un pod actif. Dans IntelliJ IDEA, dans l'onglet Diagnostic, cliquez avec le bouton droit de la souris sur un pod, puis sélectionnez Sélectionner comme actif.

Capture d’écran de l’onglet Diagnostic IntelliJ IDEA avec un pod sélectionné et l'élément de menu 'Sélectionner comme actif' affiché.

Ajoutez un journal autour d'une fonction de classe

Le journal configuré est automatiquement supprimé après 30 minutes.

Vous pouvez utiliser l’outil pour ajouter la journalisation autour des fonctions de classe, mais pas les interfaces, les constructeurs, et ainsi de suite.

Pour ajouter la journalisation à une fonction, cliquez dessus avec le bouton droit dans l’éditeur, puis sélectionnez Java Diagnostic>Add AroundLog, comme illustré dans la capture d’écran suivante.

Capture d’écran d’IntelliJ IDEA montrant le menu contextuel ouvert pour une fonction avec l’option de menu Add AroundLog mise en surbrillance.

Dans cet exemple, après avoir ajouté la journalisation, vous pouvez appeler <host>/infor pour voir la sortie similaire à l’exemple suivant avant et après l’appel de la fonction :

===== START ===== Method: updateInformation Start Time: 2024-12-12T07:37:55.404107848Z
Done with the validation
Done with the DB access
Done with the data filtering
===== END ===== Method: updateInformation End Time: 2024-12-12T07:37:55.404316940Z Total Time: 0 milliseconds

Supprimer tous les journaux configurés

Pour supprimer tous les journaux ajoutés par l’agent, sélectionnez Supprimer tous les journaux d’activité.

Remarque

Un conteneur éphémère dans le pod utilise l’agent Java principal. Après le redémarrage du pod, l'agent est supprimé.

Dépannage

Un dépassement de délai peut se produire lorsque vous tentez de rattacher l’agent à un pod s’exécutant sur un nœud sur lequel la fonctionnalité n’est pas déjà activée. Le délai d’expiration se produit parce que le nœud doit d’abord récupérer l’image de l’agent, ce qui provoque un retard. Lorsque ce délai se produit, sélectionnez Actualiser pour vérifier si l’agent est attaché ou réessayez d’attacher l’agent.

Si la pièce jointe échoue, vérifiez le journal nommé diagnostic-container-<hashcode> dans le conteneur éphémère.

Vous trouverez des informations sur le fonctionnement du plug-in dans les journaux du conteneur pod nommé diag4j-agent-service-<hashcode>.

Étape suivante

Commencer avec le composant Spring Boot Admin de l'outil de diagnostic Java (diag4j) sur AKS