Envoyer en streaming les journaux des composants managés Azure Spring Apps en temps réel
Remarque
Les plans Essentiel, Standard et Entreprise seront déconseillés à compter 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 mise hors service d’Azure Spring Apps.
Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.
Cet article s’applique à : ❎ Essentiel/Standard ✅ Entreprise
Cet article décrit comment utiliser Azure CLI afin d’obtenir en temps réel les journaux des composants managés 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 plus d’informations sur le streaming de journaux, consultez Envoyer en streaming les journaux de console d’application Azure Spring Apps en temps réel et Envoyer en streaming les journaux de travaux Azure Spring Apps en temps réel.
Prérequis
- Azure CLI avec l’extension Azure Spring Apps version 1.24.0 ou ultérieure. Vous pouvez installer cette extension à l’aide de la commande suivante :
az extension add --name spring
.
Composants managés pris en charge
Le tableau suivant liste les composants managés actuellement pris en charge, ainsi que leurs sous-composants :
Composant managé | Sous-composants |
---|---|
Service de configuration des applications | application-configuration-service flux-source-controller (pris en charge dans la version ACS Gen2) |
Spring Cloud Gateway | spring-cloud-gateway spring-cloud-gateway-operator |
Serveur de configuration Spring Cloud | config-server |
Vous pouvez utiliser la commande suivante pour lister tous les sous-composants :
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Affecter un rôle Azure
Pour envoyer en streaming les journaux des composants managés, vous devez disposer des rôles Azure appropriés qui vous sont attribués. Le tableau suivant liste les rôles requis et les opérations pour lesquelles ces rôles reçoivent des autorisations :
Composant managé | Rôle requis | Opérations |
---|---|---|
Service de configuration des applications | Rôle Lecteur de journaux du service de configuration d’application Azure Spring Apps | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud Gateway | Rôle Lecteur de journaux de la passerelle cloud Spring Azure Spring Apps | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Serveur de configuration Spring Cloud | Rôle Lecteur de journaux du serveur de configuration cloud Spring Azure Spring Apps | Microsoft.AppPlatform/Spring/configService/logstream/action |
Utilisez les étapes suivantes pour configurer un rôle Azure à l’aide du portail Azure :
Ouvrez le portail Azure.
Ouvrez votre instance de service Azure Spring Apps.
Dans le volet de navigation, sélectionnez Contrôle d’accès (IAM).
Dans la page Contrôle d’accès (IAM), sélectionnez Ajouter, puis Ajouter une attribution de rôle.
Dans la page Ajouter une attribution de rôle, dans la liste Nom, recherchez et sélectionnez le rôle cible, puis sélectionnez Suivant.
Sélectionnez Membres, puis recherchez et sélectionnez votre nom d’utilisateur.
Sélectionnez Vérifier + attribuer.
Lister toutes les instances d’un composant
Utilisez la commande suivante pour lister toutes les instances d’un composant :
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Par exemple, pour lister toutes les instances de flux-source-controller
dans la version ACS Gen2, utilisez la commande suivante :
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Afficher les dernières lignes des journaux
Cette section fournit des exemples d’utilisation d’Azure CLI pour produire les dernières lignes des journaux.
Afficher les dernières lignes des journaux d’une instance spécifique
Pour voir les dernières lignes des journaux d’une instance spécifique, utilisez la commande az spring component logs
avec l’argument -i/--instance
, comme indiqué dans la section suivante.
Afficher les dernières lignes des journaux d’une instance application-configuration-service
Utilisez la commande suivante pour afficher les dernières lignes des journaux pour application-configuration-service
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name application-configuration-service \
--instance <instance-name>
Pour ACS Gen2, la commande retourne des journaux semblables à l’exemple suivant :
...
2023-12-18T07:09:54.020Z INFO 16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8090 (https)
2023-12-18T07:09:54.116Z INFO 16715 --- [main] org.apache.juli.logging.DirectJDKLog : Starting service [Tomcat]
2023-12-18T07:09:54.117Z INFO 16715 --- [main] org.apache.juli.logging.DirectJDKLog : Starting Servlet engine: [Apache Tomcat/10.1.12]
2023-12-18T07:09:54.522Z INFO 16715 --- [main] org.apache.juli.logging.DirectJDKLog : Initializing Spring embedded WebApplicationContext
2023-12-18T07:09:54.524Z INFO 16715 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 14100 ms
2023-12-18T07:09:56.920Z INFO 16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8090 (https) with context path ''
2023-12-18T07:09:57.528Z INFO 16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
2023-12-18T07:09:57.529Z INFO 16715 --- [main] org.apache.juli.logging.DirectJDKLog : Starting service [Tomcat]
2023-12-18T07:09:57.529Z INFO 16715 --- [main] org.apache.juli.logging.DirectJDKLog : Starting Servlet engine: [Apache Tomcat/10.1.12]
2023-12-18T07:09:57.629Z INFO 16715 --- [main] org.apache.juli.logging.DirectJDKLog : Initializing Spring embedded WebApplicationContext
2023-12-18T07:09:57.629Z INFO 16715 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 603 ms
2023-12-18T07:09:57.824Z INFO 16715 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path ''
2023-12-18T07:09:58.127Z INFO 16715 --- [main] o.springframework.boot.StartupInfoLogger : Started ReconcilerApplication in 21.005 seconds (process running for 22.875)
...
Afficher les dernières lignes des journaux d’une instance flux-source-controller
Utilisez la commande suivante pour afficher les dernières lignes des journaux pour flux-source-controller
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name flux-source-controller \
--instance <instance-name>
La commande retourne des journaux semblables à l’exemple suivant :
...
{"level":"info","ts":"2023-12-18T07:07:54.615Z","logger":"controller-runtime.metrics","msg":"Metrics server is starting to listen","addr":":8080"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","logger":"setup","msg":"starting manager"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","msg":"Starting server","path":"/metrics","kind":"metrics","addr":"[::]:8080"}
{"level":"info","ts":"2023-12-18T07:07:54.615Z","msg":"Starting server","kind":"health probe","addr":"[::]:9440"}
{"level":"info","ts":"2023-12-18T07:07:54.817Z","logger":"runtime","msg":"attempting to acquire leader lease flux-system/source-controller-leader-election...\n"}
{"level":"info","ts":"2023-12-18T07:07:54.830Z","logger":"runtime","msg":"successfully acquired lease flux-system/source-controller-leader-election\n"}
...
Afficher les dernières lignes des journaux d’une instance spring-cloud-gateway
Utilisez la commande suivante pour afficher les dernières lignes des journaux pour spring-cloud-gateway
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name spring-cloud-gateway \
--instance <instance-name>
La commande retourne des journaux semblables à l’exemple suivant :
...
2023-12-11T14:13:40.310Z INFO 1 --- [ main] i.p.s.c.g.s.SsoDeactivatedConfiguration : SSO is deactivated, setting up default security filters
2023-12-11T14:13:40.506Z INFO 1 --- [ main] .h.HazelcastReactiveSessionConfiguration : Configuring Hazelcast as a session management storage
2023-12-11T14:13:51.008Z INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port 8443
2023-12-11T14:13:51.810Z INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 7 endpoint(s) beneath base path '/actuator'
2023-12-11T14:13:52.410Z INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port 8090
2023-12-11T14:13:52.907Z INFO 1 --- [ main] i.p.s.c.g.r.h.HazelcastRateLimitsRemover : Removing Hazelcast map 'GLOBAL_RATE_LIMIT' with rate limit information
2023-12-11T14:13:52.912Z INFO 1 --- [ main] i.p.s.cloud.gateway.GatewayApplication : Started GatewayApplication in 36.084 seconds (process running for 38.651)
...
Afficher les dernières lignes des journaux d’une instance spring-cloud-gateway-operator
Utilisez la commande suivante pour afficher les dernières lignes des journaux pour spring-cloud-gateway-operator
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name spring-cloud-gateway-operator \
--instance <instance-name>
La commande retourne des journaux semblables à l’exemple suivant :
...
2023-12-01T08:37:05.080Z INFO 1 --- [ main] c.v.t.s.OperatorApplication : Starting OperatorApplication v2.0.6 using Java 17.0.7 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2023-12-01T08:37:05.157Z INFO 1 --- [ main] c.v.t.s.OperatorApplication : No active profile set, falling back to 1 default profile: "default"
2023-12-01T08:37:14.379Z INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator'
2023-12-01T08:37:15.274Z INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port 8080
2023-12-01T08:37:15.366Z INFO 1 --- [ main] c.v.t.s.OperatorApplication : Started OperatorApplication in 11.489 seconds (process running for 12.467)
...
Afficher les dernières lignes des journaux d’une instance config-server
Utilisez la commande suivante pour afficher les dernières lignes des journaux pour config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
La commande retourne des journaux semblables à l’exemple suivant :
...
{"app":"config-server","ts":"2024-05-08T05:38:29.44Z","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","level":"INFO","class":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","method":"prepareWebApplicationContext","file":"ServletWebServerApplicationContext.java","line":291,"thread":"main","message":"Root WebApplicationContext: initialization completed in 3771 ms"}
{"app":"config-server","ts":"2024-05-08T05:38:31.058Z","logger":"com.microsoft.azure.spring.service.CloudConfigServerApplication","level":"INFO","class":"org.springframework.boot.StartupInfoLogger","method":"logStarted","file":"StartupInfoLogger.java","line":57,"thread":"main","message":"Started CloudConfigServerApplication in 6.888 seconds (process running for 8.986)"}
...
Afficher les dernières lignes des journaux de toutes les instances dans une seule commande
Pour afficher les dernières lignes des journaux de toutes les instances, utilisez l’argument --all-instances
, comme indiqué dans la commande suivante. Le nom de l’instance est le préfixe de chaque ligne de journal. Lorsqu’il existe plusieurs instances, les journaux sont affichés par lots pour chaque instance, de sorte que les journaux d’une instance ne sont pas mélangés avec les journaux d’une autre instance.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Envoyer en streaming continu les nouveaux journaux
Par défaut, az spring component logs
affiche uniquement les journaux existants envoyés en streaming à la console, puis se ferme. Si vous souhaitez envoyer en streaming les nouveaux journaux, ajoutez l’argument -f/--follow
.
Lorsque vous utilisez l’option -f/--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 le composant écrit des journaux en continu. Les messages du journal des pulsations utilisent le format suivant : 2023-12-18 09:12:17.745: No log from server
.
Envoyer en streaming les journaux d’une instance spécifique
Utilisez la commande suivante pour envoyer en streaming les journaux d’une instance spécifique :
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Envoyer en streaming les journaux de toutes les instances
Utilisez la commande suivante pour envoyer en streaming les journaux de toutes les instances :
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
Lorsque vous envoyez en streaming les journaux de plusieurs instances d’un composant, les journaux d’une instance sont mélangés avec les journaux des autres instances.
Envoyer en streaming les journaux 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 des composants managés en temps réel à partir d’un réseau public.
Remarque
L’activation du point de terminaison de streaming de journaux sur le réseau public ajoute une IP entrante publique à votre réseau virtuel. Faites preuve de prudence si c’est une préoccupation pour vous.
Utilisez les étapes suivantes pour activer un point de terminaison de streaming de journaux sur le réseau public :
Sélectionnez l’instance du service Azure Spring Apps déployée dans votre réseau virtuel, puis sélectionnez Mise en réseau dans le menu de navigation.
Sélectionnez l’onglet Injection dans le VNet.
Définissez l’état de Ressources de plan de données sur le réseau public sur Activer pour activer un point de terminaison de streaming de journaux sur le réseau public. Ce processus prend quelques minutes.
Une fois que vous avez activé le point de terminaison public du streaming de journaux, vous pouvez accéder aux journaux des composants managés à partir d’un réseau public, comme si vous accédiez à une instance normale.
Sécuriser le trafic vers le point de terminaison public de streaming de journaux
Le streaming de journaux pour les composants managés utilise Azure RBAC pour authentifier les connexions aux composants. Par conséquent, seuls les utilisateurs disposant des rôles appropriés peuvent accéder aux journaux.
Pour garantir la sécurité de vos composants managés 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 des composants managés dans l’instance d’injection dans le réseau virtuel à partir d’Internet une fois que vous avez activé un point de terminaison public de streaming de journaux, vérifiez votre groupe de sécurité réseau pour voir si vous avez autorisé ce trafic entrant.
Le tableau suivant présente un exemple de règle de base que nous 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 d’un service | Allow |
110 | Nom de la règle | 443 | TCP | Internet | Adresse IP d’un service | Allow |