Comment surveiller des applications Spring Boot à l’aide d’Elastic APM Java Agent

Remarque

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article s’applique à : ✔️ De base/Standard ❌ Entreprise

Cet article explique comment utiliser Elastic APM Agent pour monitorer les applications Spring Boot s’exécutant dans Azure Spring Apps.

Grâce à la solution Elastic Observability, vous pouvez obtenir une observabilité unifiée pour :

La vidéo suivante présente l’observabilité unifiée des applications Spring Boot grâce à Elastic.


Prérequis

Déployer l’application Spring Petclinic

Cet article utilise l’exemple Spring Petclinic pour vous guider à travers les étapes requises. Pour déployer l’exemple d’application, procédez comme suit :

  1. Suivez les étapes décrites dans Déployer des applications Spring Boot avec Azure Spring Apps et MySQL jusqu’à la section Déployer des applications Spring Boot et définir des variables d’environnement.

  2. Utilisez l’extension Azure Spring Apps pour Azure CLI avec la commande suivante afin de créer une application à exécuter dans Azure Spring Apps :

    az spring app create \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --is-public true
    

Activer le stockage persistant personnalisé pour Azure Spring Apps

Pour activer le stockage persistant personnalisé, procédez comme suit :

  1. Suivez les étapes décrites dans le guide pratique pour activer votre propre stockage permanent dans Azure Spring Apps.

  2. Utilisez la commande Azure CLI suivante pour ajouter un stockage persistant à vos applications Azure Spring Apps.

    az spring app append-persistent-storage \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --persistent-storage-type AzureFileVolume \
       --share-name <your-Azure-file-share-name> \
       --mount-path <unique-mount-path> \
       --storage-name <your-mounted-storage-name>
    

Activer Elastic APM Java Agent

Avant de poursuivre, vous devez avoir sous la main les informations de connectivité de votre serveur Elastic APM, ce qui suppose que vous avez déployé Elastic sur Azure. Pour plus d’informations, consultez la procédure de déploiement et de gestion d’Elastic sur Microsoft Azure. Pour obtenir ces informations, procédez comme suit :

  1. Dans le portail Azure, accédez à la page Vue d’ensemble de votre déploiement Elastic, puis sélectionnez Gérer le déploiement Elastic dans le cloud.

    Capture d’écran de la page Elasticsearch (Elastic Cloud) du Portail Azure.

  2. Sous votre déploiement sur Elastic Cloud Console, sélectionnez la section APM et flotte pour obtenir le point de terminaison et le jeton secret Elastic APM Server.

    Capture d’écran de la page APM et flotte Elastic avec l’option Copier le point de terminaison et le jeton secret APM Server mis en évidence.

  3. Téléchargez Elastic APM Java Agent à partir de Maven Central.

    Capture d’écran de Maven Central avec le téléchargement jar mis en évidence.

  4. Chargez Elastic APM Agent dans le stockage persistant personnalisé que vous avez activé précédemment. Allez sur Partage de fichiers Azure et sélectionnez Charger pour charger le fichier JAR de l’agent.

    Capture d’écran du Portail Azure illustrant le volet Charger des fichiers de la page Partage de fichiers.

  5. Après avoir obtenu le point de terminaison et le jeton secret Elastic APM, utilisez la commande suivante pour activer Elastic APM Java Agent lors du déploiement d’applications. L’espace réservé <agent-location> fait référence à l’emplacement de stockage monté d’Elastic APM Java Agent.

    az spring app deploy \
        --name <your-app-name> \
        --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \
        --jvm-options='-javaagent:<elastic-agent-location>' \
        --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \
              ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \
              ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \
              ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
    

Automatiser le provisionnement

Vous pouvez également exécuter un pipeline d’automatisation du provisionnement à l’aide de Terraform, Bicep ou d’un modèle Azure Resource Manager (modèle ARM). Ce pipeline peut fournir une expérience pratique complète pour instrumenter et surveiller les nouvelles applications que vous créez et déployez.

Automatiser le provisionnement à l’aide de Terraform

Pour configurer les variables d’environnement dans un modèle Terraform, ajoutez le code suivant au modèle, en remplaçant les espaces réservés <...> par vos propres valeurs. Pour plus d’informations, consultez Gérer un déploiement Azure Spring Apps actif.

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:<elastic-agent-location>"
  ...
    environment_variables = {
      "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
      "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
      "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
      "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  }
}

Automatiser l’approvisionnement à l’aide d’un fichier Bicep

Pour configurer les variables d’environnement dans un fichier Bicep, ajoutez le code suivant au modèle, en remplaçant les espaces réservés <...> par vos propres valeurs. Pour plus d’informations, consultez Microsoft.AppPlatform Spring/apps/déploiements.

deploymentSettings: {
  environmentVariables: {
    ELASTIC_APM_SERVICE_NAME='<your-app-name>',
    ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
    ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
    ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
  },
  jvmOptions: '-javaagent:<elastic-agent-location>',
  ...
}

Automatiser le provisionnement à l’aide d’un modèle ARM

Pour configurer les variables d’environnement dans un modèle ARM, ajoutez le code suivant au modèle, en remplaçant les espaces réservés <...> par vos propres valeurs. Pour plus d’informations, consultez Microsoft.AppPlatform Spring/apps/déploiements.

"deploymentSettings": {
  "environmentVariables": {
    "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
    "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
    "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
    "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  },
  "jvmOptions": "-javaagent:<elastic-agent-location>",
  ...
}

Mettre à niveau Elastic APM Java Agent

Pour planifier votre mise à niveau, consultez Upgrade versions (Mettre à niveau les versions) pour Elastic Cloud sur Azure et Breaking Changes (Changements cassants) pour APM. Une fois APM Server mise à niveau, chargez le fichier JAR d’agent Elastic APM Java dans le stockage persistant personnalisé. Redémarrez ensuite vos applications avec les options JVM mises à jour pointant vers le JAR d’agent Elastic APM Java mis à niveau.

Surveiller les applications et les métriques à l’aide d’Elastic APM

Pour surveiller les applications et les métriques, procédez comme suit :

  1. Dans le portail Azure, accédez à la page Vue d’ensemble de votre déploiement Elastic, puis sélectionnez le lien Kibana.

    Capture d’écran du Portail Azure illustrant la page Elasticsearch avec le lien URL de déploiement Kibana mis en évidence.

  2. Une fois Kibana ouvert, recherchez APM dans la barre de recherche, puis sélectionnez APM.

    Capture d’écran Elastic/Kibana illustrant les résultats de recherche APM.

Kibana APM est l’application organisée pour prendre en charge les flux de travail de surveillance des applications. Ici, vous pouvez afficher des détails de haut niveau, tels que les temps de requête/réponse, le débit et les transactions dans un service ayant le plus d’impact sur la durée.

Capture d’écran Elastic/Kibana illustrant la page Vue d’ensemble des services APM.

Vous pouvez explorer au niveau du détail une transaction spécifique pour comprendre les détails spécifiques à la transaction, tels que le suivi distribué.

Capture d’écran Elastic/Kibana illustrant la page Transactions des services APM.

Elastic APM Java Agent capture également les métriques JVM des applications Azure Spring Apps qui sont disponibles avec l’application Kibana pour les utilisateurs à des fins de dépannage.

Capture d’écran Elastic/Kibana illustrant la page Machine virtuelle Java (JVM) des services APM.

Grâce au moteur d’intelligence artificielle intégré à la solution Elastic, vous pouvez également activer la détection d’anomalie sur les services Azure Spring Apps et choisir une action appropriée, comme une notification Teams, la création d’un problème JIRA, un appel d’API basé sur un webhook, etc.

Capture d'écran Elastic / Kibana illustrant la page des services APM avec le volet Créer une règle et Actions mis en surbrillance.

Étapes suivantes