Riprodurre in streaming i log dei componenti gestiti di Azure Spring Apps in tempo reale
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a:❌ Basic/Standard ✔️ Enterprise
Questo articolo descrive come usare l'interfaccia della riga di comando di Azure per ottenere i log in tempo reale dei componenti gestiti per la risoluzione dei problemi. È anche possibile usare le impostazioni di diagnostica per analizzare i dati di diagnostica in Azure Spring Apps. Per altre informazioni, vedere Analizzare log e metriche con le impostazioni di diagnostica. Per altre informazioni sui log di streaming, vedere Trasmettere i log della console delle applicazioni di Azure Spring Apps in tempo reale e trasmettere i log dei processi di Azure Spring Apps in tempo reale.
Prerequisiti
- Interfaccia della riga di comando di Azure con l'estensione Azure Spring Apps, versione 1.24.0 o successiva. È possibile installare l'estensione usando il comando seguente:
az extension add --name spring
.
Componenti gestiti supportati
La tabella seguente elenca i componenti gestiti attualmente supportati, insieme ai relativi sottocomponenti:
Componente gestito | Sottocomponenti |
---|---|
Servizio di configurazione delle applicazioni | application-configuration-service flux-source-controller (Supportato in ACS Gen2 versione) |
Spring Cloud Gateway | spring-cloud-gateway spring-cloud-gateway-operator |
Spring Cloud Config Server | config-server |
È possibile usare il comando seguente per elencare tutti i sottocomponenti:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Assegnare un ruolo di Azure
Per trasmettere i log dei componenti gestiti, è necessario avere i ruoli di Azure pertinenti assegnati all'utente. Nella tabella seguente sono elencati i ruoli necessari e le operazioni per le quali vengono concessi questi ruoli:
Componente gestito | Ruolo necessario | Operazioni |
---|---|---|
Servizio di configurazione delle applicazioni | Ruolo lettore del log del servizio di configurazione dell'applicazione di Azure Spring Apps | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud Gateway | Ruolo lettore log Spring Cloud Gateway di Azure Spring Apps | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Spring Cloud Config Server | Ruolo lettore log del server spring cloud di configurazione di Azure Spring Apps | Microsoft.AppPlatform/Spring/configService/logstream/action |
Usare la procedura seguente per assegnare un ruolo di Azure usando il portale di Azure:
Apri il portale di Azure.
Aprire l'istanza del servizio Azure Spring Apps.
Nel riquadro di spostamento selezionare Controllo di accesso (IAM).
Nella pagina Controllo di accesso (IAM) selezionare Aggiungi e quindi Selezionare Aggiungi assegnazione di ruolo.
Nella pagina Aggiungi assegnazione di ruolo, nell'elenco Nome cercare e selezionare il ruolo di destinazione e quindi selezionare Avanti.
Selezionare Membri e quindi cercare e selezionare il nome utente.
Seleziona Rivedi + assegna.
Elencare tutte le istanze di un componente
Usare il comando seguente per elencare tutte le istanze di un componente:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Ad esempio, per elencare tutte le istanze di flux-source-controller
in ACS Gen2, usare il comando seguente:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Visualizzare i log della parte finale
Questa sezione fornisce esempi di uso dell'interfaccia della riga di comando di Azure per produrre i log della parte finale.
Visualizzare i log della parte finale per un'istanza specifica
Per visualizzare i log della parte finale per un'istanza specifica, usare il az spring component logs
comando con l'argomento -i/--instance
, come illustrato nella sezione successiva.
Visualizzare i log della parte finale per un'istanza di application-configuration-service
Usare il comando seguente per visualizzare i log della parte finale per 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>
Per ACS Gen2, il comando restituisce log simili all'esempio seguente:
...
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)
...
Visualizzare i log della parte finale per un'istanza di flux-source-controller
Usare il comando seguente per visualizzare i log della parte finale per 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>
Il comando restituisce log simili all'esempio seguente:
...
{"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"}
...
Visualizzare i log della parte finale per un'istanza di spring-cloud-gateway
Usare il comando seguente per visualizzare i log della parte finale per 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>
Il comando restituisce log simili all'esempio seguente:
...
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)
...
Visualizzare i log della parte finale per un'istanza di spring-cloud-gateway-operator
Usare il comando seguente per visualizzare i log della parte finale per 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>
Il comando restituisce log simili all'esempio seguente:
...
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)
...
Visualizzare i log della parte finale per un'istanza di config-server
Usare il comando seguente per visualizzare i log della parte finale per config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
Il comando restituisce log simili all'esempio seguente:
...
{"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)"}
...
Visualizzare i log della parte finale per tutte le istanze in un unico comando
Per visualizzare i log della parte finale per tutte le istanze, usare l'argomento --all-instances
, come illustrato nel comando seguente. Il nome dell'istanza è il prefisso di ogni riga di log. Quando sono presenti più istanze, i log vengono stampati in batch per ogni istanza, quindi i log di un'istanza non vengono interleavati con i log di un'altra istanza.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Trasmettere continuamente nuovi log
Per impostazione predefinita, az spring component logs
stampa solo i log esistenti trasmessi alla console e quindi esce. Se si desidera trasmettere nuovi log, aggiungere l'argomento -f/--follow
.
Quando si usa l'opzione -f/--follow
per la coda dei log istantanei, il servizio di streaming dei log di Azure Spring Apps invia i log heartbeat al client ogni minuto, a meno che il componente non scriva costantemente i log. I messaggi del log heartbeat usano il formato seguente: 2023-12-18 09:12:17.745: No log from server
.
Trasmettere i log per un'istanza specifica
Usare il comando seguente per trasmettere i log per un'istanza specifica:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Trasmettere i log per tutte le istanze
Usare il comando seguente per trasmettere i log per tutte le istanze:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
Quando si trasmetteno i log per più istanze in un componente, i log di un'istanza si interleave con i log di altri.
Trasmettere i log in un'istanza di inserimento di rete virtuale
Per un'istanza di Azure Spring Apps distribuita in una rete virtuale personalizzata, è possibile accedere allo streaming dei log per impostazione predefinita da una rete privata. Per altre informazioni, vedere Distribuire Azure Spring Apps in una rete virtuale
Azure Spring Apps consente anche di accedere ai log dei componenti gestiti in tempo reale da una rete pubblica.
Nota
L'abilitazione dell'endpoint di streaming dei log nella rete pubblica aggiunge un indirizzo IP in ingresso pubblico alla rete virtuale. Assicurarsi di prestare attenzione se si tratta di una preoccupazione per te.
Usare la procedura seguente per abilitare un endpoint di streaming dei log nella rete pubblica:
Selezionare l'istanza del servizio Azure Spring Apps distribuita nella rete virtuale quindi selezionare Rete nel menu di spostamento.
Selezionare la scheda Inserimento rete virtuale.
Cambiare lo stato delle risorse di Dataplane nella rete pubblica in Abilita per abilitare un endpoint di streaming dei log nella rete pubblica. Questo processo richiede qualche minuto.
Dopo aver abilitato l'endpoint pubblico del flusso di log, è possibile accedere ai log dei componenti gestiti da una rete pubblica esattamente come si accede a un'istanza normale.
Proteggere il traffico verso l'endpoint pubblico dello streaming di log
Il flusso di log per i componenti gestiti usa il controllo degli accessi in base al ruolo di Azure per autenticare le connessioni ai componenti. Di conseguenza, solo gli utenti che dispongono dei ruoli appropriati possono accedere ai log.
Per garantire la sicurezza dei componenti gestiti quando si espone un endpoint pubblico, proteggere l'endpoint filtrando il traffico di rete al servizio con un gruppo di sicurezza di rete. Per altre informazioni vedere Esercitazione: Filtrare il traffico di rete con un gruppo di sicurezza di rete usando il portale di Azure. Un gruppo di sicurezza di rete contiene regole di sicurezza che consentono o rifiutano il traffico di rete in ingresso o in uscita da diversi tipi di risorse di Azure. Per ogni regola, è possibile specificare origine e destinazione, porta e protocollo.
Nota
Se non è possibile accedere ai log dei componenti gestiti nell'istanza di inserimento della rete virtuale da Internet dopo aver abilitato un endpoint pubblico del flusso di log, controllare il gruppo di sicurezza di rete per verificare se è stato consentito tale traffico in ingresso.
Nella tabella seguente viene illustrato un esempio di regola di base consigliata. È possibile usare comandi come nslookup
con l'endpoint <service-name>.private.azuremicroservices.io
per ottenere l'indirizzo IP di destinazione di un servizio.
Priorità | Nome | Porta | Protocollo | Source (Sorgente) | Destination | Azione |
---|---|---|---|---|---|---|
100 | Nome regola | 80 | TCP | Internet | Indirizzo IP del servizio | Consenti |
110 | Nome regola | 443 | TCP | Internet | Indirizzo IP del servizio | Consenti |