Diffuser en continu les journaux de console d’application Azure Spring Apps en temps réel

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 à : ✔️ Java ✔️ C#

Cet article s’applique au : Niveau ✔️ De base/Standard ✔️ Entreprise

Cet article explique comment activer la diffusion en continu de journaux dans Azure CLI pour obtenir des journaux de console d’application en temps réel pour la résolution des problèmes. Vous pouvez également utiliser les paramètres de diagnostic pour analyser les données de diagnostic dans Azure Spring Apps. Pour plus d’informations, consultez Analyser les journaux et les métriques avec les paramètres de diagnostic.

Pour les journaux de diffusion en continu des composants managés dans Azure Spring Apps, consultez les journaux des composants managés Azure Spring Apps en temps réel.

Prérequis

Utiliser Azure CLI pour produire des journaux de fin

Cette section fournit des exemples d’utilisation d’Azure CLI pour produire des journaux de fin. Pour éviter de spécifier à plusieurs reprises le nom de votre groupe de ressources et de votre instance de service, utilisez les commandes suivantes pour définir le nom de votre groupe de ressources et le nom du cluster par défaut :

az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>

Le groupe de ressources et le nom du service sont omis dans les exemples suivants.

Afficher les dernières lignes du journal d’une application avec une seule instance

Si une application nommée auth-service ne dispose que d’une seule instance, vous pouvez afficher le journal de l’instance de l’application à l’aide de la commande suivante :

az spring app logs --name <application-name>

La commande retourne des journaux similaires aux exemples suivants, où auth-service est le nom de l’application.

...
2020-01-15 01:54:40.481  INFO [auth-service,,,] 1 --- [main] o.apache.catalina.core.StandardService  : Starting service [Tomcat]
2020-01-15 01:54:40.482  INFO [auth-service,,,] 1 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.22]
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/uaa]  : Initializing Spring embedded WebApplicationContext
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.s.web.context.ContextLoader  : Root WebApplicationContext: initialization completed in 7203 ms

...

Afficher les dernières lignes du journal d’une application avec plusieurs instances

Si plusieurs instances existent pour l’application nommée auth-service, vous pouvez afficher le journal des instances à l’aide de l’option -i/--instance.

Tout d’abord, exécutez la commande suivante pour obtenir les noms d’instance d’application :

az spring app show --name auth-service --query properties.activeDeployment.properties.instances --output table

La commande produit des résultats similaires à la sortie suivante :

Name                                         Status    DiscoveryStatus
-------------------------------------------  --------  -----------------
auth-service-default-12-75cc4577fc-pw7hb  Running   UP
auth-service-default-12-75cc4577fc-8nt4m  Running   UP
auth-service-default-12-75cc4577fc-n25mh  Running   UP

Ensuite, vous pouvez diffuser en continu des journaux d’une instance d’application avec l’option -i/--instance, comme suit :

az spring app logs --name auth-service --instance auth-service-default-12-75cc4577fc-pw7hb

Vous pouvez également obtenir des informations sur les instances d’application à partir du portail Azure. Après avoir sélectionné Applications dans le volet de navigation gauche de votre service Azure Spring Apps, sélectionnez instances de l’application.

Diffuser en continu de nouveaux journaux

Par défaut, az spring app logs imprime uniquement les journaux existants diffusés en continu à la console d’application, puis se ferme. Si vous souhaitez diffuser de nouveaux journaux d’activité, ajoutez l’argument -f/--follow , comme illustré dans l’exemple suivant :

az spring app logs --name auth-service --follow

Lorsque vous utilisez l’argument --follow pour les dernières lignes des journaux instantanés, le service de streaming de journaux Azure Spring Apps envoie des journaux de pulsation au client toutes les minutes, sauf si votre application écrit des journaux en continu. Les messages du journal des pulsations utilisent le format suivant : 2020-01-15 04:27:13.473: No log from server.

Utilisez la commande suivante pour vérifier toutes les options de journalisation prises en charge :

az spring app logs --help

Formater les journaux structurés JSON

Remarque

La mise en forme des journaux structurés JSON nécessite l’extension Spring version 2.4.0 ou ultérieure.

Les journaux d’application structurés sont affichés au format JSON, ce qui peut être difficile à lire. Vous pouvez utiliser l’argument --format-json pour mettre en forme les journaux au format JSON dans un format plus lisible. Pour plus d’informations, consultez le journal des applications structurées pour Azure Spring Apps.

L’exemple suivant explique comment utiliser l’argument --format-json :

# Raw JSON log
$ az spring app logs --name auth-service
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Disable delta property : false"}
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Single vip registry refresh property : null"}

# Formatted JSON log
$ az spring app logs --name auth-service --format-json
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Disable delta property : false
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Single vip registry refresh property : null

L’argument --format-json accepte également un format personnalisé facultatif, à l’aide de la syntaxe de chaîne de format. Pour plus d’informations, consultez Syntaxe de chaîne de format.

L’exemple suivant explique comment utiliser la syntaxe de chaîne de format :

# Custom format
$ az spring app logs --name auth-service --format-json="{message}{n}"
Disable delta property : false
Single vip registry refresh property : null

Le format par défaut utilisé est :

{timestamp} {level:>5} [{thread:>15.15}] {logger{39}:<40.40}: {message}{n}{stackTrace}

Diffuser en continu un journal d’application Azure Spring Apps dans une instance d’injection de réseau virtuel

Pour une instance Azure Spring Apps déployée dans un réseau virtuel personnalisé, vous pouvez accéder au streaming des journaux par défaut à partir d’un réseau privé. Pour plus d’informations, consultez Déploiement d’Azure Spring Apps dans un réseau virtuel

Azure Spring Apps vous permet également d’accéder aux journaux d’application en temps réel à partir d’un réseau public à l’aide du portail Azure ou d’Azure CLI.

Remarque

L’activation du point de terminaison de streaming de journaux sur le réseau public ajoute une adresse IP entrante publique à votre réseau virtuel. Veillez à utiliser la prudence si c’est une préoccupation pour vous.

Procédez comme suit pour activer un point de terminaison de streaming de journaux sur le réseau public :

  1. Sélectionnez l’instance de service Azure Spring Apps déployée dans votre réseau virtuel, puis sélectionnez Mise en réseau dans le menu de navigation.

  2. Sélectionnez l’onglet injection de réseau virtuel.

  3. Changez l’état des ressources Dataplane sur le réseau public pour activer un point de terminaison de streaming de journaux sur le réseau public. Ce processus prend quelques minutes.

    Screenshot of the Azure portal that shows the Networking page with the Vnet injection tab selected and the Troubleshooting section highlighted.

Après avoir activé le point de terminaison public de flux de journaux, vous pouvez accéder au journal d’application à partir d’un réseau public comme vous le feriez pour accéder à une instance normale.

Sécuriser le trafic vers le point de terminaison public de streaming de journaux

Le streaming de journaux utilise la même clé que le point de terminaison de test décrit dans Configurer un environnement intermédiaire dans Azure Spring Apps pour authentifier les connexions à vos déploiements. Par conséquent, seuls les utilisateurs disposant d’un accès en lecture aux clés de test peuvent accéder au streaming des journaux.

Pour garantir la sécurité de vos applications lorsque vous exposez un point de terminaison public pour eux, sécurisez le point de terminaison en filtrant le trafic réseau vers votre service avec un groupe de sécurité réseau. Pour plus d’informations, consultez Tutoriel : Filtrer le trafic réseau avec un groupe de sécurité réseau à l’aide du Portail Azure. Un groupe de sécurité réseau contient des règles de sécurité qui autorisent ou refusent le trafic réseau entrant ou sortant en direction/à partir des différents types de ressources Azure. Pour chaque règle, vous pouvez spécifier la source et la destination, le port et le protocole.

Remarque

Si vous ne pouvez pas accéder aux journaux d’activité d’application dans l’instance d’injection de réseau virtuel à partir d’Internet après avoir activé un point de terminaison public de flux de journaux, case activée votre groupe de sécurité réseau pour voir si vous avez autorisé ce trafic entrant.

Le tableau suivant montre un exemple de règle de base que nous vous recommandons. Vous pouvez utiliser des commandes comme nslookup avec le point de terminaison <service-name>.private.azuremicroservices.io pour obtenir l’adresse IP cible d’un service.

Priorité Nom Port Protocole Source Destination Action
100 Nom de la règle 80 TCP Internet Adresse IP du service Autoriser
110 Nom de la règle 443 TCP Internet Adresse IP du service Autoriser

Étapes suivantes