Delen via


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:

  1. Open de Azure Portal.

  2. Open uw Azure Spring Apps-service-exemplaar.

  3. Selecteer Toegangsbeheer (IAM) in het navigatiedeelvenster.

  4. Selecteer op de pagina Toegangsbeheer (IAM) Toevoegen en selecteer vervolgens Roltoewijzing toevoegen.

    Schermopname van Azure Portal met de pagina Toegangsbeheer (IAM) met de optie Roltoewijzing toevoegen gemarkeerd.

  5. Zoek en selecteer op de pagina Roltoewijzing toevoegen in de lijst Naam de doelrol en selecteer vervolgens Volgende.

    Schermopname van De Azure-portal waarop de pagina Roltoewijzing toevoegen wordt weergegeven, met de rolnaam Toepassingsconfiguratieservicelogboeklezer gemarkeerd.

  6. Selecteer Leden en zoek en selecteer uw gebruikersnaam.

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

  1. Selecteer het Azure Spring Apps-service-exemplaar dat is geïmplementeerd in uw virtuele netwerk en selecteer vervolgens Netwerken in het navigatiemenu.

  2. Selecteer het tabblad Vnet-injectie .

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

    Schermopname van Azure Portal met de pagina Netwerken met het tabblad Vnet-injectie geselecteerd en de sectie Probleemoplossing gemarkeerd.

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

Volgende stappen