Streamen von Azure Spring Apps-Anwendungskonsolenprotokollen in Echtzeit

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Java ✔️ C#

Dieser Artikel gilt für: ✔️ Basic-/Standard-Dienstebene ✔️ Enterprise-Dienstebene

In diesem Artikel wird beschrieben, wie Sie das Protokollstreaming in der Azure CLI aktivieren, um Anwendungskonsolenprotokolle in Echtzeit für die Problembehandlung zu erhalten. Sie können auch Diagnoseeinstellungen verwenden, um Diagnosedaten in Azure Spring Apps zu analysieren. Weitere Informationen finden Sie unter Analysieren von Protokollen und Metriken mit Diagnoseeinstellungen.

Voraussetzungen

Verwenden der Azure CLI zum Erzeugen von Protokollfragmenten

Dieser Abschnitt bietet Beispiele für die Verwendung von Azure CLI zum Erzeugen von Protokollfragmenten. Legen Sie den Namen der Standardressourcengruppe und den Clusternamen mit den folgenden Befehlen fest, um die wiederholte Angabe von Ressourcengruppen- und Dienstinstanznamen zu vermeiden:

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

Der Ressourcengruppenname und der Dienstname werden in den folgenden Beispielen ausgelassen.

Anzeigen des Protokollfragments für eine App mit einer einzelnen Instanz

Wenn eine App mit dem Namen auth-service nur über eine Instanz verfügt, können Sie das Protokoll der App-Instanz mit dem folgenden Befehl anzeigen:

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

Dieser Befehl gibt Protokolle ähnlich den folgenden Beispielen zurück, wobei auth-service der Anwendungsname ist.

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

...

Anzeigen des Protokollfragments für eine App mit mehreren Instanzen

Wenn mehrere Instanzen für eine App mit dem Namen auth-service vorhanden sind, können Sie das Instanzprotokoll mithilfe der Option -i/--instance anzeigen.

Führen Sie zuerst den folgenden Befehl aus, um die Namen der App-Instanz abzurufen:

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

Dieser Befehl erzeugt Ergebnisse ähnlich der folgenden Ausgabe:

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

Anschließend können Sie Protokolle einer App-Instanz mit der Option -i/--instance wie folgt streamen:

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

Sie können auch Details zu App-Instanzen im Azure-Portal anzeigen. Nachdem Sie im linken Navigationsbereich Ihres Azure Spring Apps-Diensts Apps ausgewählt haben, wählen Sie App-Instanzen aus.

Fortlaufendes Streamen neuer Protokolle

Standardmäßig gibt az spring app logs nur vorhandene Protokolle aus, die an die App-Konsole gestreamt werden, und wird dann beendet. Wenn Sie neue Protokolle streamen möchten, fügen Sie das Argument -f/--follow hinzu:

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

Wenn Sie das Argument --follow verwenden, um sofortige Protokolle zu verfolgen, sendet der Azure Spring Apps-Protokollstreamingdienst jede Minute Heartbeatprotokolle an den Client – es sei denn, dass Ihre Anwendung ständig Protokolle schreibt. Heartbeatprotokollnachrichten verwenden das folgende Format: 2020-01-15 04:27:13.473: No log from server.

Verwenden Sie den folgenden Befehl, um alle unterstützten Protokollierungsoptionen zu überprüfen:

az spring app logs --help

Formatieren strukturierter JSON-Protokolle

Hinweis

Das Formatieren von JSON-strukturierten Protokollen erfordert die Spring-Erweiterung, Version 2.4.0 oder höher.

Strukturierte Anwendungsprotokolle werden im JSON-Format angezeigt, was schwierig zu lesen sein kann. Sie können das Argument --format-json verwenden, um Protokolle im JSON-Format in ein besser lesbares Format zu formatieren. Weitere Informationen finden Sie unter Strukturiertes Anwendungsprotokoll für Azure Spring Apps.

Das folgende Beispiel zeigt die Verwendung des Arguments --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

Das Argument --format-json akzeptiert auch ein optionales, angepasstes Format unter Verwendung der Syntax der Formatzeichenfolge („format string syntax“). Weitere Informationen finden Sie unter Syntax der Formatzeichenfolge („Format String Syntax“).

Das folgende Beispiel zeigt die Verwendung der Syntax der Formatzeichenfolge („format string syntax“):

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

Das verwendete Standardformat lautet:

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

Streamen eines Azure Spring Apps-App-Protokolls in eine VNet-Injektionsinstanz

Bei einer Azure Spring Apps-Instanz, die in einem benutzerdefinierten virtuellen Netzwerk bereitgestellt wird, können Sie standardmäßig über ein privates Netzwerk auf das Protokollstreaming zugreifen. Weitere Informationen finden Sie unter Bereitstellen von Azure Spring Apps in einem virtuellen Netzwerk.

Azure Spring Apps ermöglicht ihnen auch den Zugriff auf App-Protokolle in Echtzeit aus einem öffentlichen Netzwerk über das Azure-Portal oder mithilfe der Azure CLI.

Verwenden Sie die folgenden Schritte, um einen Endpunkt für das Protokollstreaming im öffentlichen Netzwerk zu aktivieren.

  1. Wählen Sie die Azure Spring Apps-Dienstinstanz aus, die in Ihrem virtuellen Netzwerk bereitgestellt wird, und öffnen Sie dann im Navigationsmenü die Registerkarte Netzwerk.

  2. Wählen Sie die Seite VNet-Injektion aus.

  3. Wechseln Sie den Status von Protokollstreaming im öffentlichen Netzwerk auf aktivieren, einen Endpunkt für das Protokollstreaming im öffentlichen Netzwerk zu aktivieren. Dies kann einige Minuten dauern.

    Screenshot des Aktivierens eine öffentlichen Endpunkts für das Protokollstreaming auf der Seite „VNet-Injektion“.

Sichern des Datenverkehrs an den öffentlichen Endpunkt für das Protokollstreaming

Das Protokollstreaming verwendet denselben Schlüssel wie der in Einrichten einer Stagingumgebung in Azure Spring Apps beschriebene Testendpunkt, um die Verbindungen mit Ihren Bereitstellungen zu authentifizieren. Daher können nur Benutzer, die über Lesezugriff für die Testschlüssel verfügen, auf Protokollstreaming zugreifen.

Um die Sicherheit Ihrer Anwendungen sicherzustellen, wenn Sie einen öffentlichen Endpunkt für sie verfügbar machen, schützen Sie den Endpunkt, indem Sie den Netzwerkdatenverkehr an Ihren Dienst mit einer Netzwerksicherheitsgruppe filtern. Weitere Informationen finden Sie im Tutorial: Filtern von Netzwerkdatenverkehr mithilfe einer Netzwerksicherheitsgruppe über das Azure-Portal. Eine Netzwerksicherheitsgruppe enthält Sicherheitsregeln, die eingehenden Netzwerkdatenverkehr an verschiedene Typen von Azure-Ressourcen oder ausgehenden Netzwerkdatenverkehr von diesen zulassen oder verweigern. Für jede Regel können Sie die Quelle, das Ziel, den Port und das Protokoll angeben.

Hinweis

Wenn Sie nach dem Aktivieren eines öffentlichen Endpunkts für den Protokollstream nicht über das Internet auf App-Protokolle in der VNet-Injektionsinstanz zugreifen können, überprüfen Sie Ihre Netzwerksicherheitsgruppe, um festzustellen, ob Sie solchen eingehenden Datenverkehr zugelassen haben.

Nächste Schritte