Strömma hanterade komponentloggar i Azure Spring Apps i realtid
Kommentar
Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.
Den här artikeln gäller för:❌ Basic/Standard ✔️ Enterprise
Den här artikeln beskriver hur du använder Azure CLI för att hämta realtidsloggar för hanterade komponenter för felsökning. Du kan också använda diagnostikinställningar för att analysera diagnostikdata i Azure Spring Apps. Mer information finns i Analysera loggar och mått med diagnostikinställningar. Mer information om strömmande loggar finns i Stream Azure Spring Apps-programkonsolloggar i realtid och Streama Azure Spring Apps-jobbloggar i realtid.
Förutsättningar
- Azure CLI med Azure Spring Apps-tillägget version 1.24.0 eller senare. Du kan installera tillägget med hjälp av följande kommando:
az extension add --name spring
.
Hanterade komponenter som stöds
I följande tabell visas de hanterade komponenter som stöds för närvarande, tillsammans med deras underkomponenter:
Hanterad komponent | Delkomponenter |
---|---|
Programkonfigurationstjänst | application-configuration-service flux-source-controller (Stöds i ACS Gen2-version) |
Spring Cloud Gateway | spring-cloud-gateway spring-cloud-gateway-operator |
Spring Cloud Config Server | config-server |
Du kan använda följande kommando för att visa alla underkomponenter:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Tilldela en Azure-roll
Om du vill strömma loggar för hanterade komponenter måste du ha tilldelats relevanta Azure-roller. I följande tabell visas de roller som krävs och de åtgärder som dessa roller beviljas behörigheter för:
Hanterad komponent | Nödvändig roll | Operations |
---|---|---|
Programkonfigurationstjänst | Loggläsarroll för Azure Spring Apps-programkonfigurationstjänsten | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud Gateway | Loggläsarroll för Azure Spring Apps Spring Cloud Gateway | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Spring Cloud Config Server | Azure Spring Apps Spring Cloud Config Server Log Reader-roll | Microsoft.AppPlatform/Spring/configService/logstream/action |
Använd följande steg för att tilldela en Azure-roll med hjälp av Azure-portalen:
Öppna Azure Portal.
Öppna din Azure Spring Apps-tjänstinstans.
I navigeringsfönstret väljer du Åtkomstkontroll (IAM).
På sidan Åtkomstkontroll (IAM) väljer du Lägg till och sedan Lägg till rolltilldelning.
På sidan Lägg till rolltilldelning i listan Namn söker du efter och väljer målrollen och väljer sedan Nästa.
Välj Medlemmar och sök sedan efter och välj ditt användarnamn.
Välj Granska + tilldela.
Visa en lista över alla instanser i en komponent
Använd följande kommando för att lista alla instanser i en komponent:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Om du till exempel vill visa en lista över alla instanser i flux-source-controller
ACS Gen2-versionen använder du följande kommando:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Visa svansloggar
Det här avsnittet innehåller exempel på hur du använder Azure CLI för att skapa tail logs.
Visa tail-loggar för en specifik instans
Om du vill visa tail-loggarna för en specifik instans använder du az spring component logs
kommandot med -i/--instance
argumentet, som du ser i nästa avsnitt.
Visa tail-loggar för en instans av application-configuration-service
Använd följande kommando för att visa svansloggarna för 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>
För ACS Gen2 returnerar kommandot loggar som liknar följande exempel:
...
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)
...
Visa tail-loggar för en instans av flux-source-controller
Använd följande kommando för att visa svansloggarna för 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>
Kommandot returnerar loggar som liknar följande exempel:
...
{"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"}
...
Visa tail-loggar för en instans av spring-cloud-gateway
Använd följande kommando för att visa svansloggarna för 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>
Kommandot returnerar loggar som liknar följande exempel:
...
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)
...
Visa tail-loggar för en instans av spring-cloud-gateway-operator
Använd följande kommando för att visa svansloggarna för 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>
Kommandot returnerar loggar som liknar följande exempel:
...
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)
...
Visa tail-loggar för en instans av config-server
Använd följande kommando för att visa svansloggarna för config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
Kommandot returnerar loggar som liknar följande exempel:
...
{"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)"}
...
Visa tail-loggar för alla instanser i ett kommando
Om du vill visa tail-loggarna för alla instanser använder du --all-instances
argumentet, som du ser i följande kommando. Instansnamnet är prefixet för varje loggrad. När det finns flera instanser skrivs loggar ut i batch för varje instans, så loggar för en instans interfolieras inte med loggarna för en annan instans.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Strömma nya loggar kontinuerligt
Som standard az spring component logs
skriver endast ut befintliga loggar som strömmas till konsolen och avslutas sedan. Om du vill strömma nya loggar lägger du till -f/--follow
argumentet.
När du använder -f/--follow
alternativet för att skugga snabbloggar skickar Azure Spring Apps loggströmningstjänst pulsslagsloggar till klienten varje minut såvida inte komponenten hela tiden skriver loggar. Pulsslagsloggmeddelanden använder följande format: 2023-12-18 09:12:17.745: No log from server
.
Strömma loggar för en specifik instans
Använd följande kommando för att strömma loggar för en specifik instans:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Strömma loggar för alla instanser
Använd följande kommando för att strömma loggar för alla instanser:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
När du strömmar loggar för flera instanser i en komponent, sammanlänkar loggarna för en instans med andras loggar.
Strömma loggar i en instans av virtuell nätverksinmatning
För en Azure Spring Apps-instans som distribueras i ett anpassat virtuellt nätverk kan du som standard komma åt loggströmning från ett privat nätverk. Mer information finns i Distribuera Azure Spring Apps i ett virtuellt nätverk
Med Azure Spring Apps kan du också komma åt hanterade komponentloggar i realtid från ett offentligt nätverk.
Kommentar
När du aktiverar loggströmningsslutpunkten i det offentliga nätverket läggs en offentlig inkommande IP-adress till i det virtuella nätverket. Var försiktig om detta är ett problem för dig.
Använd följande steg för att aktivera en slutpunkt för loggströmning i det offentliga nätverket:
Välj den Azure Spring Apps-tjänstinstans som distribuerats i ditt virtuella nätverk och välj sedan Nätverk på navigeringsmenyn.
Välj fliken Vnet-inmatning .
Växla status för Dataplane-resurser i det offentliga nätverket till Aktivera för att aktivera en logguppspelningsslutpunkt i det offentliga nätverket. Den här processen tar några minuter.
När du har aktiverat loggströmmens offentliga slutpunkt kan du komma åt loggarna för hanterade komponenter från ett offentligt nätverk på samma sätt som du skulle ha åtkomst till en normal instans.
Skydda trafik till den offentliga slutpunkten för loggströmning
Loggströmning för hanterade komponenter använder Azure RBAC för att autentisera anslutningarna till komponenterna. Därför kan endast användare som har rätt roller komma åt loggarna.
Skydda slutpunkten genom att filtrera nätverkstrafik till din tjänst med en nätverkssäkerhetsgrupp för att säkerställa säkerheten för dina hanterade komponenter när du exponerar en offentlig slutpunkt för dem. Mer information finns i Självstudie: Filtrera nätverkstrafik med en nätverkssäkerhetsgrupp med hjälp av Azure-portalen. En nätverkssäkerhetsgrupp innehåller säkerhetsregler som tillåter eller nekar inkommande nätverkstrafik till, eller utgående nätverkstrafik från, flera typer av Azure-resurser. För varje regel kan du ange källa och mål, port och protokoll.
Kommentar
Om du inte kan komma åt loggar för hanterade komponenter i instansen av den virtuella nätverksinmatningen från Internet när du har aktiverat en offentlig loggströmslutpunkt kontrollerar du nätverkssäkerhetsgruppen för att se om du har tillåtit sådan inkommande trafik.
I följande tabell visas ett exempel på en grundläggande regel som vi rekommenderar. Du kan använda kommandon som nslookup
med slutpunkten <service-name>.private.azuremicroservices.io
för att hämta mål-IP-adressen för en tjänst.
Prioritet | Namn | Port | Protokoll | Källa | Mål | Action |
---|---|---|---|---|---|---|
100 | Regelnamn | 80 | TCP | Internet | Tjänstens IP-adress | Tillåt |
110 | Regelnamn | 443 | TCP | Internet | Tjänstens IP-adress | Tillåt |