Streamen von Azure Spring Apps-Protokollen verwalteter Komponenten in Echtzeit
Hinweis
Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.
Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.
Dieser Artikel gilt für: ❎ Basic/Standard ✅ Enterprise
In diesem Artikel wird beschrieben, wie Sie die Azure CLI zum Abrufen von Echtzeitprotokollen verwalteter Komponenten für die Problembehandlung verwenden. 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. Weitere Informationen zu Streamingprotokollen finden Sie unter Streamen von Azure Spring Apps-Anwendungskonsolenprotokollen in Echtzeit und Streamen von Azure Spring Apps-Auftragsprotokollen in Echtzeit.
Voraussetzungen
- Die Azure CLI mit der Azure Spring Apps-Erweiterung, Version 1.24.0 oder höher Sie können diese Erweiterung mit dem folgenden Befehl installieren:
az extension add --name spring
.
Unterstützte verwaltete Komponenten
In der folgenden Tabelle sind die verwalteten Komponenten aufgeführt, die derzeit unterstützt werden, sowie deren Unterkomponenten:
Verwaltete Komponente | Unterkomponenten |
---|---|
Anwendungskonfigurationsdienst | application-configuration-service flux-source-controller (in ACS Gen2-Version unterstützt) |
Spring Cloud Gateway | spring-cloud-gateway spring-cloud-gateway-operator |
Spring Cloud-Konfigurationsserver | config-server |
Sie können den folgenden Befehl verwenden, um alle Unterkomponenten aufzulisten:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Zuweisen einer Azure-Rolle
Damit Sie die Protokolle verwalteter Komponenten streamen können, müssen Ihnen die relevanten Azure-Rollen zugewiesen sein. In der folgenden Tabelle sind die erforderlichen Rollen und die Vorgänge aufgeführt, für die diesen Rollen Berechtigungen erteilt wurden:
Verwaltete Komponente | Erforderliche Rolle | Vorgänge |
---|---|---|
Anwendungskonfigurationsdienst | Rolle „Protokollleser für den Azure Spring Apps-Anwendungskonfigurationsdienst“ | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud Gateway | Rolle „Spring Cloud Gateway-Protokollleser für Azure Spring Apps“ | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Spring Cloud-Konfigurationsserver | Rolle „Spring Cloud Config Server-Protokollleser für Azure Spring Apps“ | Microsoft.AppPlatform/Spring/configService/logstream/action |
Führen Sie die folgenden Schritte aus, um eine Azure-Rolle über das Azure-Portal zuzuweisen:
Öffnen Sie das Azure-Portal.
Öffnen Sie Ihre Azure Spring Apps-Dienstinstanz.
Wählen Sie im Navigationsbereich Zugriffssteuerung (IAM) aus.
Wählen Sie auf der Seite Zugriffssteuerung (IAM) die Option Hinzufügen und dann Rollenzuweisung hinzufügen aus.
Suchen Sie auf der Seite Rollenzuweisung hinzufügen in der Liste Name die Zielrolle, und wählen Sie sie und anschließend Weiter aus.
Wählen Sie Mitglieder aus, suchen Sie nach Ihrem Benutzernamen, und wählen Sie diesen dann aus.
Wählen Sie Überprüfen und zuweisen aus.
Auflisten aller Instanzen in einer Komponente
Verwenden Sie den folgenden Befehl, um alle Instanzen in einer Komponente aufzulisten:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Wenn Sie beispielsweise alle Instanzen für flux-source-controller
in der ACS Gen2-Version auflisten möchten, verwenden Sie den folgenden Befehl:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Anzeigen von Protokollfragmenten
Dieser Abschnitt bietet Beispiele für die Verwendung der Azure CLI zum Erzeugen von Protokollfragmenten.
Anzeigen von Protokollfragmenten für eine bestimmte Instanz
Wenn Sie die Protokollfragmente für eine bestimmte Instanz anzeigen möchten, verwenden Sie den Befehl az spring component logs
mit dem Argument -i/--instance
, wie im nächsten Abschnitt gezeigt.
Anzeigen von Protokollfragmenten für eine Instanz von application-configuration-service
Führen Sie den folgenden Befehl aus, um die Protokollfragmente für application-configuration-service
anzuzeigen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name application-configuration-service \
--instance <instance-name>
Bei ACS Gen2 gibt der Befehl Protokolle wie im folgenden Beispiel zurück:
...
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)
...
Anzeigen von Protokollfragmenten für eine Instanz von flux-source-controller
Führen Sie den folgenden Befehl aus, um die Protokollfragmente für flux-source-controller
anzuzeigen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name flux-source-controller \
--instance <instance-name>
Der Befehl gibt Protokolle wie im folgenden Beispiel zurück:
...
{"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"}
...
Anzeigen von Protokollfragmenten für eine Instanz von spring-cloud-gateway
Führen Sie den folgenden Befehl aus, um die Protokollfragmente für spring-cloud-gateway
anzuzeigen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name spring-cloud-gateway \
--instance <instance-name>
Der Befehl gibt Protokolle wie im folgenden Beispiel zurück:
...
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)
...
Anzeigen von Protokollfragmenten für eine Instanz von spring-cloud-gateway-operator
Führen Sie den folgenden Befehl aus, um die Protokollfragmente für spring-cloud-gateway-operator
anzuzeigen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name spring-cloud-gateway-operator \
--instance <instance-name>
Der Befehl gibt Protokolle wie im folgenden Beispiel zurück:
...
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)
...
Anzeigen von Protokollfragmenten für eine Config Server-Instanz
Führen Sie den folgenden Befehl aus, um die Protokollfragmente für config-server
anzuzeigen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
Der Befehl gibt Protokolle wie im folgenden Beispiel zurück:
...
{"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)"}
...
Anzeigen von Protokollfragmenten für alle Instanzen in einem Befehl
Wenn Sie die Protokollfragmente für alle Instanzen anzeigen möchten, verwenden Sie das Argument --all-instances
, wie im folgenden Befehl dargestellt. Der Instanzname ist das Präfix jeder Protokollzeile. Bei mehreren Instanzen werden Protokolle für jede Instanz als Batch ausgegeben, sodass sich Protokolle einer Instanz nicht mit den Protokollen einer anderen Instanz überlappen.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Fortlaufendes Streamen neuer Protokolle
Standardmäßig gibt az spring component logs
nur vorhandene Protokolle aus, die an die Konsole gestreamt werden, und wird dann beendet. Wenn Sie neue Protokolle streamen möchten, fügen Sie das Argument -f/--follow
hinzu.
Wenn Sie die Option -f/--follow
verwenden, um sofortige Protokolle anzufügen, sendet der Azure Spring Apps-Protokollstreamingdienst jede Minute Heartbeatprotokolle an den Client – es sei denn, die Komponente schreibt ständig Protokolle. Heartbeatprotokollnachrichten verwenden das folgende Format: 2023-12-18 09:12:17.745: No log from server
.
Streamen von Protokollen für eine bestimmte Instanz
Verwenden Sie den folgenden Befehl, um Protokolle für eine bestimmte Instanz zu streamen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Streamen von Protokollen für alle Instanzen
Verwenden Sie den folgenden Befehl, um Protokolle für alle Instanzen zu streamen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
Wenn Sie Protokolle für mehrere Instanzen in einer Komponente streamen, überlappen sich die Protokolle einer Instanz mit den Protokollen anderer Instanzen.
Streamen von Protokollen in einer 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 außerdem den Zugriff auf Protokolle verwalteter Komponenten in Echtzeit aus einem öffentlichen Netzwerk.
Hinweis
Durch die Aktivierung des Protokollstreamingendpunkts im öffentlichen Netzwerk wird Ihrem virtuellen Netzwerk eine öffentliche IP-Adresse für eingehenden Datenverkehr hinzugefügt. Seien Sie vorsichtig, wenn dies für Sie ein Problem darstellt.
Verwenden Sie die folgenden Schritte, um einen Endpunkt für das Protokollstreaming im öffentlichen Netzwerk zu aktivieren:
Wählen Sie die Azure Spring Apps-Dienstinstanz aus, die in Ihrem virtuellen Netzwerk bereitgestellt wird, und wählen Sie dann im Navigationsmenü die Option Netzwerk aus.
Wählen Sie die Registerkarte VNet-Injektion aus.
Ändern Sie den Status von Ressourcen auf Datenebene im öffentlichen Netzwerk in Aktivieren, um einen Endpunkt für das Protokollstreaming im öffentlichen Netzwerk zu aktivieren. Dieser Vorgang dauert einige Minuten.
Nachdem Sie den öffentlichen Endpunkt für den Protokollstream aktiviert haben, können Sie aus einem öffentlichen Netzwerk genau so auf die Protokolle verwalteter Komponenten zugreifen, wie Sie auf eine normale Instanz zugreifen würden.
Sichern des Datenverkehrs an den öffentlichen Endpunkt für das Protokollstreaming
Das Protokollstreaming für verwaltete Komponenten verwendet Azure RBAC, um die Verbindungen mit den Komponenten zu authentifizieren. Daher können nur Benutzer, die über die richtigen Rollen verfügen, auf die Protokolle zugreifen.
Um die Sicherheit Ihrer verwalteten Komponenten 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 unter 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 und 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 Protokolle verwalteter Komponenten in der VNet-Injektionsinstanz zugreifen können, überprüfen Sie Ihre Netzwerksicherheitsgruppe, um festzustellen, ob Sie solchen eingehenden Datenverkehr zugelassen haben.
Die folgende Tabelle zeigt ein Beispiel für eine empfohlene Basisregel: Sie können Befehle wie nslookup
mit dem Endpunkt <service-name>.private.azuremicroservices.io
verwenden, um die Ziel-IP-Adresse eines Diensts abzurufen.
Priority | Name | Port | Protokoll | Quelle | Ziel | Aktion |
---|---|---|---|---|---|---|
100 | Regelname | 80 | TCP | Internet | Dienst-IP-Adresse | Zulassen |
110 | Regelname | 443 | TCP | Internet | Dienst-IP-Adresse | Zulassen |