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
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Comprendre la section Exigences du plan niveau Enterprise dans la place de marché Azure et y répondre.
- Azure CLI version 2.45.0 ou ultérieure.
- Git.
- L’extension de plan Enterprise d’Azure Spring Apps. Utilisez la commande suivante pour supprimer les versions précédentes et installer l’extension de plan Enterprise la plus récente. Si vous avez déjà installé l’extension
spring-cloud
, désinstallez-la pour éviter les incompatibilités de configuration et de version.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Ressources à surveiller, telles que celles créées dans les démarrages rapides suivants :
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.
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.
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}
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}
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
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 :
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 :
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 :
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 :
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 :
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 :
Accédez au volet Performances, qui sera similaire à la capture d’écran suivante :
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 :
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 :
Sélectionnez un appel SQL pour afficher la transaction de bout en bout dans le contexte, comme illustré dans la capture d’écran suivante :
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 :
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 :
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.
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 :
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 :