Logboeken van beheerde azure Spring Apps-onderdelen streamen in realtime
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
Dit artikel is van toepassing op:❌ Basic/Standard ✔️ Enterprise
In dit artikel wordt beschreven hoe u de Azure CLI gebruikt om realtime logboeken van beheerde onderdelen op te halen voor probleemoplossing. U kunt ook diagnostische instellingen gebruiken om diagnostische gegevens te analyseren in Azure Spring Apps. Zie Logboeken en metrische gegevens analyseren met diagnostische instellingen voor meer informatie. Zie Stream Azure Spring Apps-toepassingsconsolelogboeken in realtime en Stream Azure Spring Apps-taaklogboeken in realtime voor meer informatie over streaminglogboeken.
Vereisten
- Azure CLI met de Azure Spring Apps-extensie, versie 1.24.0 of hoger. U kunt de extensie installeren met behulp van de volgende opdracht:
az extension add --name spring
Ondersteunde beheerde onderdelen
De volgende tabel bevat de beheerde onderdelen die momenteel worden ondersteund, samen met hun subonderdelen:
Beheerd onderdeel | Subonderdelen |
---|---|
Toepassingsconfiguratieservice | application-configuration-service flux-source-controller (Ondersteund in ACS Gen2-versie) |
Spring Cloud Gateway | spring-cloud-gateway spring-cloud-gateway-operator |
Spring Cloud-configuratieserver | config-server |
U kunt de volgende opdracht gebruiken om alle subonderdelen weer te geven:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Een Azure-rol toewijzen
Als u logboeken van beheerde onderdelen wilt streamen, moet u beschikken over de relevante Azure-rollen die aan u zijn toegewezen. De volgende tabel bevat de vereiste rollen en de bewerkingen waarvoor deze rollen machtigingen krijgen:
Beheerd onderdeel | Vereiste rol | Operations |
---|---|---|
Toepassingsconfiguratieservice | Azure Spring Apps Application Configuration Service-logboeklezerrol | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud Gateway | Azure Spring Apps Spring Cloud Gateway-logboeklezerrol | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Spring Cloud-configuratieserver | Azure Spring Apps Spring Cloud Config Server Log Reader-rol | Microsoft.AppPlatform/Spring/configService/logstream/action |
Gebruik de volgende stappen om een Azure-rol toe te wijzen met behulp van Azure Portal:
Open de Azure Portal.
Open uw Azure Spring Apps-service-exemplaar.
Selecteer Toegangsbeheer (IAM) in het navigatiedeelvenster.
Selecteer op de pagina Toegangsbeheer (IAM) Toevoegen en selecteer vervolgens Roltoewijzing toevoegen.
Zoek en selecteer op de pagina Roltoewijzing toevoegen in de lijst Naam de doelrol en selecteer vervolgens Volgende.
Selecteer Leden en zoek en selecteer uw gebruikersnaam.
Selecteer Controleren + toewijzen.
Alle exemplaren in een onderdeel weergeven
Gebruik de volgende opdracht om alle exemplaren in een onderdeel weer te geven:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Als u bijvoorbeeld alle exemplaren flux-source-controller
in acs Gen2-versie wilt weergeven, gebruikt u de volgende opdracht:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Tail-logboeken weergeven
In deze sectie vindt u voorbeelden van het gebruik van de Azure CLI om tail-logboeken te produceren.
Tail-logboeken voor een specifiek exemplaar weergeven
Als u de tail-logboeken voor een specifiek exemplaar wilt weergeven, gebruikt u de az spring component logs
opdracht met het -i/--instance
argument, zoals wordt weergegeven in de volgende sectie.
Tail-logboeken weergeven voor een exemplaar van een toepassingsconfiguratieservice
Gebruik de volgende opdracht om de tail-logboeken weer te geven voor 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>
Voor ACS Gen2 retourneert de opdracht logboeken die vergelijkbaar zijn met het volgende voorbeeld:
...
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)
...
Tail-logboeken weergeven voor een exemplaar van flux-source-controller
Gebruik de volgende opdracht om de tail-logboeken weer te geven voor 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>
De opdracht retourneert logboeken die vergelijkbaar zijn met het volgende voorbeeld:
...
{"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"}
...
Tail-logboeken weergeven voor een exemplaar van spring-cloud-gateway
Gebruik de volgende opdracht om de tail-logboeken weer te geven voor 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>
De opdracht retourneert logboeken die vergelijkbaar zijn met het volgende voorbeeld:
...
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)
...
Tail-logboeken weergeven voor een exemplaar van spring-cloud-gateway-operator
Gebruik de volgende opdracht om de tail-logboeken weer te geven voor 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>
De opdracht retourneert logboeken die vergelijkbaar zijn met het volgende voorbeeld:
...
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)
...
Tail-logboeken weergeven voor een exemplaar van config-server
Gebruik de volgende opdracht om de tail-logboeken weer te geven voor config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
De opdracht retourneert logboeken die vergelijkbaar zijn met het volgende voorbeeld:
...
{"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)"}
...
Tail-logboeken weergeven voor alle exemplaren in één opdracht
Als u de tail-logboeken voor alle exemplaren wilt weergeven, gebruikt u het --all-instances
argument, zoals wordt weergegeven in de volgende opdracht. De exemplaarnaam is het voorvoegsel van elke logboekregel. Wanneer er meerdere exemplaren zijn, worden logboeken in batch voor elk exemplaar afgedrukt, zodat logboeken van één exemplaar niet worden gekoppeld aan de logboeken van een ander exemplaar.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Nieuwe logboeken continu streamen
az spring component logs
Standaard worden alleen bestaande logboeken afgedrukt die naar de console worden gestreamd en vervolgens afgesloten. Als u nieuwe logboeken wilt streamen, voegt u het -f/--follow
argument toe.
Wanneer u de -f/--follow
optie gebruikt om direct logboeken achter te laten, verzendt de Azure Spring Apps-logboekstreamingservice elke minuut heartbeat-logboeken naar de client, tenzij het onderdeel voortdurend logboeken schrijft. Heartbeat-logboekberichten gebruiken de volgende indeling: 2023-12-18 09:12:17.745: No log from server
.
Logboeken streamen voor een specifiek exemplaar
Gebruik de volgende opdracht om logboeken voor een specifiek exemplaar te streamen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Logboeken streamen voor alle exemplaren
Gebruik de volgende opdracht om logboeken voor alle exemplaren te streamen:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
Wanneer u logboeken streamt voor meerdere exemplaren in een onderdeel, worden de logboeken van één exemplaar door elkaar opgeslagen met logboeken van anderen.
Logboeken streamen in een exemplaar van een virtuele netwerkinjectie
Voor een Azure Spring Apps-exemplaar dat is geïmplementeerd in een aangepast virtueel netwerk, hebt u standaard toegang tot logboekstreaming vanuit een particulier netwerk. Zie Azure Spring Apps implementeren in een virtueel netwerk voor meer informatie
Met Azure Spring Apps hebt u ook toegang tot realtime beheerde onderdeellogboeken vanuit een openbaar netwerk.
Notitie
Als u het eindpunt voor logboekstreaming op het openbare netwerk inschakelt, wordt een openbaar binnenkomend IP-adres aan uw virtuele netwerk toegevoegd. Wees voorzichtig als dit een probleem voor u is.
Gebruik de volgende stappen om een eindpunt voor logboekstreaming in te schakelen op het openbare netwerk:
Selecteer het Azure Spring Apps-service-exemplaar dat is geïmplementeerd in uw virtuele netwerk en selecteer vervolgens Netwerken in het navigatiemenu.
Selecteer het tabblad Vnet-injectie .
Schakel de status van Dataplane-resources op het openbare netwerk in op Inschakelen om een streaming-eindpunt voor logboeken in te schakelen op het openbare netwerk. Dit duurt enkele minuten.
Nadat u het openbare eindpunt van de logboekstream hebt ingeschakeld, hebt u toegang tot de logboeken van beheerde onderdelen vanuit een openbaar netwerk, net zoals u een normaal exemplaar zou openen.
Verkeer naar het openbare eindpunt voor logboekstreaming beveiligen
Logboekstreaming voor beheerde onderdelen maakt gebruik van Azure RBAC om de verbindingen met de onderdelen te verifiëren. Als gevolg hiervan hebben alleen gebruikers met de juiste rollen toegang tot de logboeken.
Beveilig het eindpunt door netwerkverkeer naar uw service te filteren met een netwerkbeveiligingsgroep om de beveiliging van uw beheerde onderdelen te waarborgen wanneer u een openbaar eindpunt voor hen beschikbaar maakt. Zie Zelfstudie: Netwerkverkeer filteren met een netwerkbeveiligingsgroep met behulp van Azure Portal voor meer informatie. Een netwerkbeveiligingsgroep bevat beveiligingsregels waarmee binnenkomend netwerkverkeer naar, of uitgaand netwerkverkeer van, diverse typen Azure-resources kan worden toegestaan of geweigerd. Voor elke regel kunt u de bron en het doel, de poort en het protocol opgeven.
Notitie
Als u geen toegang hebt tot logboeken van beheerde onderdelen in het exemplaar van het virtuele netwerkinjectie vanaf internet nadat u een openbaar eindpunt voor de logboekstream hebt ingeschakeld, controleert u de netwerkbeveiligingsgroep om te zien of u dergelijk binnenkomend verkeer hebt toegestaan.
In de volgende tabel ziet u een voorbeeld van een basisregel die we aanbevelen. U kunt opdrachten zoals nslookup
met het eindpunt <service-name>.private.azuremicroservices.io
gebruiken om het doel-IP-adres van een service op te halen.
Prioriteit | Name | Poort | Protocol | Bron | Doel | Bewerking |
---|---|---|---|---|---|---|
100 | Naam van de regel | 80 | TCP | Internet | IP-adres van service | Toestaan |
110 | Naam van de regel | 443 | TCP | Internet | IP-adres van service | Toestaan |