Démarrage rapide : Surveiller les applications de bout en bout

Remarque

Les plans Essentiel, Standard et Entreprise seront déconseillés à partir de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de la mise hors service d’Azure Spring Apps.

Le plan de consommation Standard et dédié sera déconseillé à partir du 30 septembre 2024, avec un arrêt complet au bout de six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation Standard et dédié Azure Spring Apps vers Azure Container Apps.

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

Ce démarrage rapide vous montre comment surveiller les applications exécutant le plan d'entreprise azure spring apps en utilisant Application Insights et l'analyse des journaux.

Notes

Vous pouvez surveiller vos charges de travail Spring de bout en bout à l’aide de n’importe quel outil et plateforme de votre choix, notamment App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic ou Splunk. Pour plus d'informations, consultez Utilisation d’autres outils de surveillance plus loin dans cet article.

Prérequis

Mettre à jour des applications

Vous devez fournir manuellement la chaîne de connexion Application Insights aux applications Order Service (ASP.NET core) et Cart Service (Python). Les instructions suivantes décrivent comment fournir cette chaîne de connexion et augmenter le taux d’échantillonnage sur Application Insights.

Notes

Actuellement, seuls les buildpacks pour applications Java et NodeJS prennent en charge l’instrumentation d’Application Insights.

  1. Créez des variables destinées à contenir les noms de ressources à l’aide des commandes suivantes. Veillez à remplacer les espaces réservés par vos valeurs. Le nom de votre instance de service Azure Spring Apps doit comporter entre 4 et 32 caractères et ne contenir que des lettres, des chiffres et des traits d’union. Le premier caractère du nom du service doit être une lettre, et le dernier doit être une lettre ou un chiffre.

    export RESOURCE_GROUP="<resource-group-name>"
    export APP_INSIGHTS_NAME="<app-insights-name>"
    export KEY_VAULT_NAME="<key-vault-name>"
    export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME="<Azure-Spring-Apps-service-instance-name>"
    

    Remarque

    Par défaut, le nom de APP_INSIGHTS_NAME est identique à celui de AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Utilisez les commandes suivantes pour récupérer la chaîne de connexion Application Insights et la définir dans Key Vault :

    export CONNECTION_STRING=$(az monitor app-insights component show \
        --resource-group ${RESOURCE_GROUP} \
        --app ${APP_INSIGHTS_NAME} \
        --query "connectionString" \
        --output tsv)
    
    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "ApplicationInsights--ConnectionString" \
        --value ${CONNECTION_STRING}
    
  3. Utilisez la commande suivante pour mettre à jour le taux d’échantillonnage de la liaison Application Insights afin d’augmenter la quantité de données disponibles :

    az spring build-service builder buildpack-binding set \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --builder-name default \
        --name default \
        --type ApplicationInsights \
        --properties sampling-rate=100 connection_string=${CONNECTION_STRING}
    
  4. Utilisez les commandes suivantes pour redémarrer les applications afin de recharger la configuration :

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name cart-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name order-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name catalog-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name frontend
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name payment-service
    
  5. Si vous avez configuré l’authentification unique, utilisez les commandes suivantes pour redémarrer les applications afin de recharger la configuration des applications service d’identité :

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name identity-service
    

    Pour les applications Java et NodeJS, le redémarrage permettra au nouveau taux d’échantillonnage de prendre effet. Pour les applications non Java, le redémarrage leur permettra d’accéder à la clé d’instrumentation nouvellement ajoutée à partir du Key Vault.

Afficher les journaux d’activité

Il existe deux façons de consulter les journaux sur Azure Spring Apps : le streaming de journaux pour les journaux en temps réel par instance d’application ou Log Analytics pour les journaux agrégés avec fonction de requête avancée.

Utiliser le streaming de journaux

Générez du trafic dans l’application en parcourant l’application, en affichant le catalogue et en passant des commandes. Utilisez les commandes suivantes pour générer du trafic en continu, jusqu’à ce que l’opération soit annulée :

export GATEWAY_URL=$(az spring gateway show \
    --resource-group ${RESOURCE_GROUP} \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --query "properties.url" \
    --output tsv)

export GATEWAY_URL=https://${GATEWAY_URL} 

cd azure-spring-apps-enterprise/load-test/traffic-generator
./gradlew gatlingRun-com.vmware.acme.simulation.GuestSimulation.java

Utilisez la commande suivante pour obtenir les 100 dernières lignes de journaux de console d’application à partir de l’application Catalog Service :

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --lines 100

En ajoutant l’option --follow, vous pouvez obtenir le streaming de journaux en temps réel d’une application. Utilisez la commande suivante pour essayer le streaming de journaux pour l’application Catalog Service :

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --follow

Conseil

Vous pouvez utiliser az spring app logs --help pour découvrir d’autres paramètres et fonctionnalités de flux de journaux.

Utiliser Log Analytics

Accédez au Portail Azure et ouvrez l’instance Log Analytics que vous avez créée. Vous trouverez l’instance Log Analytics dans le même groupe de ressources que celui dans lequel vous avez créé l’instance du service Azure Spring Apps.

Sur la page Log Analytics, sélectionnez le volet Journaux et exécutez l’un des exemples de requêtes suivants pour Azure Spring Apps.

Tapez et exécutez la requête Kusto suivante pour afficher les journaux d’application :

AppPlatformLogsforSpring
| where TimeGenerated > ago(24h)
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Cette requête produit des résultats similaires à ceux présentés dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant l’exemple de sortie de toutes les requêtes de journaux d’application.

Tapez et exécutez la requête Kusto suivante pour afficher les journaux d’application catalog-service :

AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Cette requête produit des résultats similaires à ceux présentés dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant l’exemple de sortie de toutes les requêtes d’application du service de catalogue.

Tapez et exécutez la requête Kusto suivante pour afficher les erreurs et les exceptions levées par chaque application :

AppPlatformLogsforSpring
| where Log contains "error" or Log contains "exception"
| extend FullAppName = strcat(ServiceName, "/", AppName)
| summarize count_per_app = count() by FullAppName, ServiceName, AppName, _ResourceId
| sort by count_per_app desc
| render piechart

Cette requête produit des résultats similaires à ceux présentés dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant l’exemple de sortie des journaux d’entrées.

Tapez et exécutez la requête Kusto suivante pour afficher tous les appels entrants dans Azure Spring Apps :

AppPlatformIngressLogs
| project TimeGenerated, RemoteAddr, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Tapez et exécutez la requête Kusto suivante pour afficher tous les journaux de la passerelle de configuration Spring Cloud managée gérée par Azure Spring Apps :

AppPlatformSystemLogs
| where LogType contains "SpringCloudGateway"
| project TimeGenerated,Log

Cette requête produit des résultats similaires à ceux présentés dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant l’exemple de sortie des journaux Spring Cloud Gateway.

Tapez et exécutez la requête Kusto suivante pour afficher tous les journaux du registre de service Spring Cloud managé géré par Azure Spring Apps :

AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log

Cette requête produit des résultats similaires à ceux présentés dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant l’exemple de sortie des journaux du registre des services.

Utiliser le suivi

Dans le Portail Azure, ouvrez l’instance Application Insights créée par Azure Spring Apps et commencez à surveiller les applications Spring Boot. Vous trouverez l’instance Application Insights dans le même groupe de ressources que celui dans lequel vous avez créé une instance de service Azure Spring Apps.

Accédez au volet Plan de l’application, qui sera similaire à la capture d’écran suivante :

Capture d’écran du portail Azure montrant la cartographie d’application d’Azure Application Insights.

Accédez au volet Performances, qui sera similaire à la capture d’écran suivante :

Capture d’écran du portail Azure montrant le volet des performances d’Azure Application Insights.

Accédez au volet Performances/Dépendances. Ici, vous pouvez voir le nombre de performances des dépendances, et plus particulièrement les appels SQL, comme illustré dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant la section Dépendances du volet des performances d’Azure Application Insights.

Accédez au volet Performances/Rôles. Ici, vous pouvez voir les métriques de performances d’instances ou de rôles individuels, comme dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant la section Rôles du volet des performances d’Azure Application Insights.

Sélectionnez un appel SQL pour afficher la transaction de bout en bout dans le contexte, comme illustré dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant la transaction de bout en bout d’un appel SQL.

Accédez au volet Échecs/Exceptions. Ici, vous pouvez voir une collection d’exceptions, similaire à ce qui s’affiche dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant les échecs d’application sous la forme d’un graphique

Afficher les mesures

Accédez au volet Métriques. Ici, vous pouvez voir les métriques fournies par les applications Spring Boot, les modules Spring Cloud et les dépendances. Le graphique sur la capture d’écran suivante montre http_server_requests et Heap Memory Used :

Capture d’écran du portail Azure montrant les métriques au fil du temps sous la forme d’un graphique.

Spring Boot inscrit un grand nombre de métriques principales : JVM, UC, Tomcat, Logback, et ainsi de suite. La configuration automatique de Spring Boot permet l’instrumentation de requêtes traitées par Spring MVC. Les contrôleurs REST ProductController et PaymentController ont été instrumentés par l’annotation Micrometer @Timed au niveau de la classe.

La métrique personnalisée suivante est activée pour l’application acme-catalog : @Timed : store.products

La métrique personnalisée suivante est activée pour l’application acem-payment : @Timed : store.payment

Vous pouvez voir ces métriques personnalisées dans le volet Métriques, comme illustré dans la capture d’écran suivante.

Capture d’écran montrant les métriques personnalisées instrumentées par Micrometer.

Accédez au volet Métriques en temps réel. Ici, vous pouvez voir les métriques en temps réel à l’écran avec des latences faibles < 1 seconde, comme illustré dans la capture d’écran suivante :

Capture d’écran montrant les métriques en direct de l’ensemble des applications.

Utilisation d’autres outils de surveillance

Le plan Azure Spring Apps Enterprise prend également en charge l'exportation de métriques vers d'autres outils, notamment les outils suivants :

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Vous pouvez ajouter d’autres liaisons à un générateur dans Tanzu Build Service à l’aide de la commande suivante :

az spring build-service builder buildpack-binding create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --builder-name <builder-name> \
    --name <binding-name> \
    --type <ApplicationInsights|AppDynamics|ApacheSkyWalking|Dynatrace|ElasticAPM|NewRelic> \
    --properties <connection-properties>
    --secrets <secret-properties>

Nettoyer les ressources

Si vous prévoyez d’utiliser d’autres guides de démarrage rapide et tutoriels, vous pouvez conserver ces ressources. Quand vous n’en avez plus besoin, supprimez le groupe de ressources, ce qui supprime également les ressources qu’il contient. Pour supprimer le groupe de ressources à l’aide d’Azure CLI, utilisez les commandes suivantes :

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Étapes suivantes

Passez à l’un des guides de démarrage rapide facultatifs suivants :