Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Plany Basic, Standardi Enterprise weszły w okres wycofywania 17 marca 2025 r. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Ten artykuł dotyczy: ❎ Podstawowa/Standardowa ✅ Enterprise
W tym artykule opisano sposób używania interfejsu wiersza polecenia platformy Azure do uzyskiwania dzienników składników zarządzanych w czasie rzeczywistym na potrzeby rozwiązywania problemów. Możesz również użyć ustawień diagnostycznych do analizowania danych diagnostycznych w usłudze Azure Spring Apps. Aby uzyskać więcej informacji, zobacz Analizowanie dzienników i metryk przy użyciu ustawień diagnostycznych. Aby uzyskać więcej informacji na temat dzienników przesyłania strumieniowego, zobacz Stream Azure Spring Apps application console logs in real time (Dzienniki konsoli aplikacji Usługi Azure Spring Apps w czasie rzeczywistym) i Stream Azure Spring Apps job logs in real time (Dzienniki zadań Usługi Azure Spring Apps w czasie rzeczywistym).
Wymagania wstępne
-
Interfejs wiersza polecenia platformy Azure z rozszerzeniem Azure Spring Apps w wersji 1.24.0 lub nowszej. Rozszerzenie można zainstalować przy użyciu następującego polecenia:
az extension add --name spring.
Obsługiwane składniki zarządzane
Poniższa tabela zawiera listę składników zarządzanych, które są obecnie obsługiwane, wraz z ich podskładniki:
| Składnik zarządzany | Składniki podrzędne |
|---|---|
| Usługa konfiguracji aplikacji | application-configuration-service flux-source-controller (Obsługiwane w wersji ACS Gen2) |
| Brama chmury Spring | spring-cloud-gateway spring-cloud-gateway-operator |
| Spring Cloud Config Server (serwer konfiguracji dla aplikacji opartych na Spring Cloud) | config-server |
Aby wyświetlić listę wszystkich podskładników, możesz użyć następującego polecenia:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
Przypisywanie roli platformy Azure
Aby przesyłać strumieniowo dzienniki składników zarządzanych, musisz mieć przypisane odpowiednie role platformy Azure. W poniższej tabeli wymieniono wymagane role i operacje, dla których te role mają przyznane uprawnienia:
| Składnik zarządzany | Wymagana rola | Operacje |
|---|---|---|
| Usługa konfiguracji aplikacji | Rola czytelnika dziennika usługi konfiguracji aplikacji usługi Azure Spring Apps | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
| Brama chmury Spring | Rola czytelnika dzienników usługi Spring Cloud Gateway w usłudze Azure Spring Apps | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
| Spring Cloud Config Server (serwer konfiguracji dla aplikacji opartych na Spring Cloud) | Rola czytelnika dzienników serwera Azure Spring Apps Spring Cloud Config | Microsoft.AppPlatform/Spring/configService/logstream/action |
Aby przypisać rolę platformy Azure przy użyciu witryny Azure Portal, wykonaj następujące kroki:
Otwórz portal Azure.
Otwórz instancję usługi Azure Spring Apps.
W okienku nawigacji wybierz pozycję Kontrola dostępu (IAM).
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami) wybierz Dodaj, a następnie wybierz Dodaj przypisanie do roli.
Na stronie Dodawanie przypisania roli na liście Nazwa wyszukaj i wybierz rolę docelową, a następnie wybierz pozycję Dalej.
Wybierz pozycję Członkowie , a następnie wyszukaj i wybierz swoją nazwę użytkownika.
Wybierz Przejrzyj + przypisz.
Wyświetlanie listy wszystkich wystąpień w składniku
Użyj następującego polecenia, aby wyświetlić listę wszystkich wystąpień w składniku:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
Aby na przykład wyświetlić listę wszystkich wystąpień usługi flux-source-controller w wersji ACS Gen2, użyj następującego polecenia:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
Wyświetlanie logów końcowych
Ta sekcja zawiera przykłady użycia interfejsu wiersza polecenia platformy Azure do tworzenia dzienników końcowych.
Wyświetlanie dzienników końcowych dla określonego wystąpienia
Aby wyświetlić końcowe dzienniki dla określonego wystąpienia, użyj polecenia az spring component logs z argumentem -i/--instance, jak pokazano w sekcji.
Wyświetlanie dzienników końcowych dla wystąpienia usługi application-configuration-service
Użyj następującego polecenia, aby wyświetlić logi końcowe dla 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>
W przypadku usługi ACS Gen2 polecenie zwraca dzienniki podobne do następującego przykładu:
...
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)
...
Wyświetl logi końcowe dla instancji flux-source-controller
Użyj następującego polecenia, aby wyświetlić logi końcowe dla 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>
Polecenie zwraca dzienniki podobne do następującego przykładu:
...
{"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"}
...
Wyświetl logi końcowe dla instancji spring-cloud-gateway
Użyj następującego polecenia, aby wyświetlić logi końcowe dla 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>
Polecenie zwraca dzienniki podobne do następującego przykładu:
...
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)
...
Wyświetlanie logów końcowych dla wystąpienia operatora spring-cloud-gateway
Użyj następującego polecenia, aby wyświetlić logi końcowe dla 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>
Polecenie zwraca dzienniki podobne do następującego przykładu:
...
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)
...
Wyświetlanie ostatnich wpisów logu dla wystąpienia konfiguracyjnego serwera
Użyj następującego polecenia, aby wyświetlić logi końcowe dla config-server:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
Polecenie zwraca dzienniki podobne do następującego przykładu:
...
{"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)"}
...
Wyświetl logi ogonowe dla wszystkich instancji w jednym poleceniu
Aby wyświetlić dzienniki końcowe dla wszystkich wystąpień, użyj argumentu --all-instances , jak pokazano w poniższym poleceniu. Nazwa wystąpienia jest prefiksem każdego wiersza dziennika. Jeśli istnieje wiele wystąpień, dzienniki są drukowane w partii dla każdego wystąpienia, więc dzienniki jednego wystąpienia nie są przeplatane dziennikami innego wystąpienia.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
Strumieniowe przesyłanie nowych dzienników na bieżąco
Domyślnie az spring component logs drukuje tylko istniejące dzienniki przesyłane strumieniowo do konsoli, a następnie kończy działanie. Jeśli chcesz przesyłać strumieniowo nowe dzienniki, dodaj -f/--follow argument .
Gdy używasz -f/--follow opcji do tworzenia natychmiastowych dzienników, usługa przesyłania strumieniowego dzienników usługi Azure Spring Apps wysyła dzienniki pulsu do klienta co minutę, chyba że składnik stale zapisuje dzienniki. Komunikaty dziennika pulsu używają następującego formatu: 2023-12-18 09:12:17.745: No log from server.
Przekazywanie dzienników dla określonego wystąpienia
Użyj następującego polecenia, aby przesyłać strumieniowo dzienniki dla określonego wystąpienia:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
Przeglądanie dzienników dla wszystkich wystąpień
Użyj następującego polecenia, aby strumieniowo przesyłać dzienniki ze wszystkich instancji.
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
Podczas streamingu dzienników dla wielu wystąpień w ramach składnika, dzienniki jednego wystąpienia są przeplatane z dziennikami innych.
Przesyłanie dzienników w instancji implementacji sieci wirtualnej
Dla instancji Azure Spring Apps wdrożonej w niestandardowej sieci wirtualnej, domyślnie można uzyskać dostęp do przesyłania strumieniowego dzienników z sieci prywatnej. Aby uzyskać więcej informacji, zobacz Wdrażanie usługi Azure Spring Apps w sieci wirtualnej
Usługa Azure Spring Apps umożliwia również dostęp do dzienników składników zarządzanych w czasie rzeczywistym z sieci publicznej.
Uwaga
Włączenie punktu końcowego strumieniowania dzienników w sieci publicznej powoduje dodanie publicznego adresu IP przychodzącego do sieci wirtualnej. Pamiętaj, aby zachować ostrożność, jeśli jest to dla Ciebie problemem.
Wykonaj następujące kroki, aby włączyć punkt końcowy streamingu logów w sieci publicznej:
Wybierz wystąpienie usługi Azure Spring Apps wdrożone w sieci wirtualnej, a następnie wybierz pozycję Sieć w menu nawigacji.
Wybierz kartę Vnet Injection.
Przełącz stan zasobów płaszczyzny danych w sieci publicznej na Włącz, aby włączyć punkt końcowy strumieniowego przesyłania logów w sieci publicznej. Ten proces trwa kilka minut.
Po włączeniu publicznego punktu końcowego strumienia dziennika można uzyskać dostęp do dzienników składników zarządzanych z sieci publicznej tak samo jak w przypadku normalnego wystąpienia.
Zabezpieczanie ruchu do publicznego punktu końcowego strumieniowania logów
Transmisja strumieniowa logów dla składników zarządzanych używa kontroli dostępu opartej na rolach platformy Azure do uwierzytelniania połączeń ze składnikami. W związku z tym tylko użytkownicy, którzy mają odpowiednie role, mogą uzyskiwać dostęp do dzienników.
Aby zapewnić bezpieczeństwo zarządzanych składników podczas udostępniania dla nich publicznego punktu końcowego, należy zabezpieczyć punkt końcowy, filtrując ruch sieciowy do usługi za pomocą grupy zabezpieczeń sieciowych. Aby uzyskać więcej informacji, zobacz Samouczek: filtrowanie ruchu sieciowego za pomocą sieciowej grupy zabezpieczeń przy użyciu witryny Azure Portal. Sieciowa grupa zabezpieczeń zawiera reguły zabezpieczeń, które zezwalają na lub blokują przychodzący ruch sieciowy lub wychodzący ruch sieciowy dla kilku typów zasobów platformy Azure. Dla każdej reguły można określić źródło i obiekt docelowy, port i protokół.
Uwaga
Jeśli nie możesz uzyskać dostępu do dzienników składników zarządzanych w instancji z wstrzykniętym połączeniem sieci wirtualnej z Internetu po włączeniu publicznego punktu końcowego do strumienia logów, sprawdź swoją grupę zabezpieczeń sieciowych, aby upewnić się, że taki ruch przychodzący jest dozwolony.
W poniższej tabeli przedstawiono przykład podstawowej reguły, którą zalecamy. Aby uzyskać docelowy adres IP usługi, możesz użyć poleceń, takich jak nslookup w przypadku punktu końcowego <service-name>.private.azuremicroservices.io .
| Priorytet | Nazwa | Port | Protokół | Źródło | Cel podróży | Akcja |
|---|---|---|---|---|---|---|
| 100 | Nazwa reguły | 80 | TCP | Internet | Adres IP usługi | Zezwól |
| 110 | Nazwa reguły | 443 | TCP | Internet | Adres IP usługi | Zezwól |