Streamování protokolů komponent spravovaných službou Azure Spring Apps v reálném čase

Poznámka:

Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.

Tento článek se vztahuje na:❌ Basic/Standard ✔️ Enterprise

Tento článek popisuje, jak pomocí Azure CLI získat protokoly spravovaných komponent v reálném čase pro účely řešení potíží. K analýze diagnostických dat v Azure Spring Apps můžete použít také nastavení diagnostiky. Další informace najdete v tématu Analýza protokolů a metrik s nastavením diagnostiky. Další informace o protokolech streamování najdete v tématu Streamování protokolů konzoly aplikace Azure Spring Apps v reálném čase a protokoly úloh Stream Azure Spring Apps v reálném čase.

Požadavky

  • Azure CLI s rozšířením Azure Spring Apps verze 1.24.0 nebo vyšší. Rozšíření můžete nainstalovat pomocí následujícího příkazu: az extension add --name spring.

Podporované spravované komponenty

Následující tabulka obsahuje seznam spravovaných komponent, které jsou aktuálně podporovány, spolu s jejich dílčími součástmi:

Spravovaná komponenta Dílčí komponenty
Služba konfigurace aplikace application-configuration-service
flux-source-controller (Podporováno ve verzi ACS Gen2)
Brána Spring Cloud spring-cloud-gateway
spring-cloud-gateway-operator
Spring Cloud Config Server config-server

Pomocí následujícího příkazu můžete zobrazit seznam všech dílčích podkomponentů:

az spring component list
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name>

Přiřazení role Azure

Pokud chcete streamovat protokoly spravovaných komponent, musíte mít přiřazené příslušné role Azure. Následující tabulka uvádí požadované role a operace, pro které mají tyto role udělená oprávnění:

Spravovaná komponenta Požadovaná role Operace
Služba konfigurace aplikace Role čtenáře protokolu aplikační služby Azure Spring Apps Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action
Brána Spring Cloud Role čtenáře protokolů brány Spring Cloud pro Azure Spring Apps Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action
Spring Cloud Config Server Role čtenáře protokolů konfiguračního serveru Spring Apps v Azure Spring Apps Microsoft.AppPlatform/Spring/configService/logstream/action

Pomocí následujících kroků přiřaďte roli Azure pomocí webu Azure Portal:

  1. Otevřete Azure Portal.

  2. Otevřete instanci služby Azure Spring Apps.

  3. V navigačním podokně vyberte Řízení přístupu (IAM).

  4. Na stránce Řízení přístupu (IAM) vyberte Přidat a pak vyberte Přidat přiřazení role.

    Snímek obrazovky webu Azure Portal se stránkou Řízení přístupu (IAM) se zvýrazněnou možností Přidat přiřazení role

  5. Na stránce Přidat přiřazení role v seznamu Název vyhledejte a vyberte cílovou roli a pak vyberte Další.

    Snímek obrazovky webu Azure Portal se stránkou Přidat přiřazení role se zvýrazněným názvem role Čtenář protokolu konfigurační služby aplikace

  6. Vyberte Členy a pak vyhledejte a vyberte své uživatelské jméno.

  7. Vyberte Zkontrolovat + přiřadit.

Výpis všech instancí v komponentě

Pomocí následujícího příkazu vypíšete všechny instance v komponentě:

az spring component instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --component <component-name>

Pokud například chcete zobrazit seznam všech instancí ve flux-source-controller verzi ACS Gen2, použijte následující příkaz:

az spring component instance list \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --component flux-source-controller

Zobrazení protokolů tail

Tato část obsahuje příklady použití Azure CLI k vytváření tail logs.

Zobrazeníprotokolůch

Pokud chcete zobrazit koncové protokoly pro konkrétní instanci, použijte az spring component logs příkaz s argumentem -i/--instance , jak je znázorněno v další části.

Zobrazení protokolů tail pro instanci služby application-configuration-service

Pomocí následujícího příkazu zobrazte koncové protokoly pro 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>

V případě ACS Gen2 příkaz vrátí protokoly podobné následujícímu příkladu:

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

Zobrazení protokolů tail pro instanci kontroleru flux-source-controller

Pomocí následujícího příkazu zobrazte koncové protokoly pro 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>

Příkaz vrátí protokoly podobné následujícímu příkladu:

...
{"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"}
...

Zobrazení koncových protokolů pro instanci spring-cloud-gateway

Pomocí následujícího příkazu zobrazte koncové protokoly pro 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>

Příkaz vrátí protokoly podobné následujícímu příkladu:

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

Zobrazení koncových protokolů pro instanci spring-cloud-gateway-operator

Pomocí následujícího příkazu zobrazte koncové protokoly pro 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>

Příkaz vrátí protokoly podobné následujícímu příkladu:

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

Zobrazení koncových protokolů pro instanci konfiguračního serveru

Pomocí následujícího příkazu zobrazte koncové protokoly pro config-server:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name config-server \
    --instance <instance-name>

Příkaz vrátí protokoly podobné následujícímu příkladu:

...
{"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)"}
...

Zobrazení protokolů tail pro všechny instance v jednom příkazu

Pokud chcete zobrazit koncové protokoly pro všechny instance, použijte --all-instances argument, jak je znázorněno v následujícím příkazu. Název instance je předpona každého řádku protokolu. Pokud existuje více instancí, protokoly se pro každou instanci vytisknou v dávce, takže protokoly jedné instance nejsou prokládání s protokoly jiné instance.

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --all-instances

Průběžné streamování nových protokolů

Ve výchozím nastavení az spring component logs vytiskne pouze existující protokoly streamované do konzoly a pak se ukončí. Pokud chcete streamovat nové protokoly, přidejte -f/--follow argument.

Když použijete -f/--follow možnost pro koncové okamžité protokoly, služba streamování protokolů Azure Spring Apps odesílá do klienta protokoly prezenčních signálů každou minutu, pokud komponenta protokoly zapisuje neustále. Zprávy protokolu prezenčních signálů používají následující formát: 2023-12-18 09:12:17.745: No log from server.

Streamování protokolů pro konkrétní instanci

K streamování protokolů pro konkrétní instanci použijte následující příkaz:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --instance <instance-name> \
    --follow

Streamování protokolů pro všechny instance

Pomocí následujícího příkazu streamujte protokoly pro všechny instance:

az spring component logs \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <component-name> \
    --all-instances \
    --follow

Když streamujete protokoly pro více instancí v komponentě, protokoly jedné instance prokládání s protokoly ostatních.

Streamování protokolů v instanci injektáže virtuální sítě

Pro instanci Azure Spring Apps nasazenou ve vlastní virtuální síti můžete ve výchozím nastavení přistupovat ke streamování protokolů z privátní sítě. Další informace najdete v tématu Nasazení služby Azure Spring Apps ve virtuální síti.

Azure Spring Apps také umožňuje přístup k protokolům komponent spravovaných v reálném čase z veřejné sítě.

Poznámka:

Povolení koncového bodu streamování protokolů ve veřejné síti přidá do vaší virtuální sítě veřejnou příchozí IP adresu. Buďte opatrní, pokud se jedná o problém pro vás.

Pomocí následujících kroků povolte koncový bod streamování protokolů ve veřejné síti:

  1. Vyberte instanci služby Azure Spring Apps nasazenou ve vaší virtuální síti a pak v navigační nabídce vyberte Sítě .

  2. Vyberte kartu injektáže virtuální sítě.

  3. Přepněte stav prostředků roviny dat ve veřejné síti , abyste povolili koncový bod streamování protokolů ve veřejné síti. Tento proces trvá několik minut.

    Snímek obrazovky webu Azure Portal zobrazující stránku Sítě s vybranou kartou Injektáž virtuální sítě a zvýrazněnou částí Řešení potíží

Po povolení veřejného koncového bodu streamu protokolu můžete přistupovat k protokolům spravovaných komponent z veřejné sítě stejně, jako byste přistupovali k normální instanci.

Zabezpečení provozu do veřejného koncového bodu streamování protokolů

Streamování protokolů pro spravované komponenty používá Azure RBAC k ověření připojení k komponentám. V důsledku toho mají přístup k protokolům jenom uživatelé, kteří mají správné role.

Pokud chcete zajistit zabezpečení spravovaných komponent při zveřejnění veřejného koncového bodu pro ně, zabezpečte koncový bod filtrováním síťového provozu do vaší služby pomocí skupiny zabezpečení sítě. Další informace najdete v tématu Kurz: Filtrování síťového provozu pomocí skupiny zabezpečení sítě pomocí webu Azure Portal. Skupina zabezpečení sítě obsahuje pravidla zabezpečení umožňující povolit nebo odepřít příchozí nebo odchozí síťový provoz několika typů prostředků Azure. Pro každé pravidlo můžete určit zdroj a cíl, port a protokol.

Poznámka:

Pokud nemůžete získat přístup k protokolům spravovaných komponent v instanci injektáže virtuální sítě z internetu po povolení veřejného koncového bodu streamu protokolu, zkontrolujte skupinu zabezpečení sítě a zjistěte, jestli jste takový příchozí provoz povolili.

Následující tabulka ukazuje příklad základního pravidla, které doporučujeme. K získání cílové IP adresy služby můžete použít příkazy jako nslookup u koncového bodu <service-name>.private.azuremicroservices.io .

Priorita Název Port Protokol Zdroj Cíl Akce
100 Název pravidla 80 TCP Internet IP adresa služby Povolit
110 Název pravidla 443 TCP Internet IP adresa služby Povolit

Další kroky