Condividi tramite


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

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:

  1. Selezionare l'istanza del servizio Azure Spring Apps distribuita nella rete virtuale e quindi selezionare Rete nel menu di spostamento.

  2. Selezionare la scheda Inserimento rete virtuale .

  3. 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.

    Screenshot del portale di Azure che mostra la pagina Rete con la scheda Vnet injection selezionata e la sezione Risoluzione dei problemi evidenziata.

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

Passaggi successivi