Trasmettere i log della console dell'applicazione di Azure Spring Apps in tempo reale
Nota
Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.
Questo articolo si applica a: ✔️ Java ✔️ C#
Questo articolo si applica a: ✔️ Basic/Standard ✔️ Enterprise
Questo articolo descrive come abilitare lo streaming dei log nell'interfaccia della riga di comando di Azure per ottenere i log della console dell'applicazione in tempo reale 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 i log e le metriche con le impostazioni di diagnostica. Per altre informazioni sui log di streaming, vedere Trasmettere i log dei processi di Azure Spring Apps in tempo reale e Trasmettere i log dei componenti gestiti di Azure Spring Apps in tempo reale.
Prerequisiti
- Interfaccia della riga di comando di Azure con l'estensione Azure Spring Apps, versione 1.0.0 o successiva. È possibile installare l'estensione usando il comando seguente:
az extension add --name spring
- Istanza di Azure Spring Apps con un'applicazione in esecuzione. Per altre informazioni, vedere Avvio rapido: Distribuire la prima applicazione in Azure Spring Apps.
Usare l'interfaccia della riga di comando di Azure per produrre 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. Per evitare di specificare ripetutamente il gruppo di risorse e il nome dell'istanza del servizio, usare i comandi seguenti per impostare il nome del gruppo di risorse e il nome del cluster predefiniti:
az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>
Il gruppo di risorse e il nome del servizio vengono omessi negli esempi seguenti.
Visualizzare il log della parte finale di un'app con una singola istanza
Se un'app denominata auth-service
ha una sola istanza, è possibile visualizzare il log dell'istanza dell'app con il comando seguente:
az spring app logs --name <application-name>
Il comando restituisce log simili agli esempi seguenti, dove auth-service
è il nome dell'applicazione.
...
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
...
Visualizzare il log della parte finale di un'app con più istanze
Se esistono più istanze per l'app denominata auth-service
, è possibile visualizzare il log dell'istanza usando l'opzione -i/--instance
.
Eseguire prima di tutto il comando seguente per ottenere i nomi delle istanze dell'app:
az spring app show --name auth-service --query properties.activeDeployment.properties.instances --output table
Il comando produce risultati simili all'output seguente:
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
È quindi possibile trasmettere i log di un'istanza dell'app usando l'opzione -i/--instance
, come indicato di seguito:
az spring app logs --name auth-service --instance auth-service-default-12-75cc4577fc-pw7hb
È anche possibile ottenere i dettagli delle istanze dell'app dal portale di Azure. Dopo aver selezionato App nel riquadro di spostamento sinistro del servizio App Spring di Azure, selezionare Istanze dell'app.
Streaming continuo dei nuovi log
Per impostazione predefinita, az spring app logs
stampa solo i log esistenti trasmessi alla console dell'app e quindi si chiude. Se si vuole trasmettere nuovi log, aggiungere l'argomento -f/--follow
, come illustrato nell'esempio seguente:
az spring app logs --name auth-service --follow
Quando si usa l'argomento --follow
per eseguire i log istantanei, il servizio di streaming dei log di Azure Spring Apps invia i log heartbeat al client ogni minuto, a meno che l'applicazione non scriva costantemente i log. I messaggi del log heartbeat usano il formato seguente: 2020-01-15 04:27:13.473: No log from server
.
Usare il comando seguente per controllare tutte le opzioni di registrazione supportate:
az spring app logs --help
Formattare i log strutturati JSON
Nota
La formattazione dei log strutturati JSON richiede l'estensione spring versione 2.4.0 o successiva.
I log delle applicazioni strutturati vengono visualizzati in formato JSON, che possono essere difficili da leggere. È possibile usare l'argomento --format-json
per formattare i log in formato JSON in un formato più leggibile. Per altre informazioni, vedere Log applicazioni strutturate per Azure Spring Apps.
Nell'esempio seguente viene illustrato come usare l'argomento --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'argomento --format-json
accetta anche un formato personalizzato facoltativo usando la sintassi della stringa di formato. Per altre informazioni, vedere Formattare la sintassi delle stringhe.
Nell'esempio seguente viene illustrato come usare la sintassi della stringa di formato:
# Custom format
$ az spring app logs --name auth-service --format-json="{message}{n}"
Disable delta property : false
Single vip registry refresh property : null
Il formato predefinito usato è:
{timestamp} {level:>5} [{thread:>15.15}] {logger{39}:<40.40}: {message}{n}{stackTrace}
Trasmettere un log dell'app Azure Spring Apps 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 App Azure Spring in una rete virtuale
Azure Spring Apps consente anche di accedere ai log delle app in tempo reale da una rete pubblica usando portale di Azure o l'interfaccia della riga di comando di Azure.
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 e quindi selezionare Rete nel menu di spostamento.
Selezionare la scheda Inserimento rete virtuale .
Cambiare lo stato delle risorse di Dataplane nella rete pubblica 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 al log dell'app da una rete pubblica esattamente come si accede a un'istanza normale.
Proteggere il traffico verso l'endpoint pubblico del flusso di log
Lo streaming dei log usa la stessa chiave dell'endpoint di test descritto in Configurare un ambiente di gestione temporanea in Azure Spring Apps per autenticare le connessioni alle distribuzioni. Di conseguenza, solo gli utenti che hanno accesso in lettura alle chiavi di test possono accedere allo streaming dei log.
Per garantire la sicurezza delle applicazioni 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 negano il traffico di rete in ingresso o il traffico di rete in uscita rispettivamente verso o 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 delle app 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 |