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:
Otevřete Azure Portal.
Otevřete instanci služby Azure Spring Apps.
V navigačním podokně vyberte Řízení přístupu (IAM).
Na stránce Řízení přístupu (IAM) vyberte Přidat a pak vyberte Přidat přiřazení role.
Na stránce Přidat přiřazení role v seznamu Název vyhledejte a vyberte cílovou roli a pak vyberte Další.
Vyberte Členy a pak vyhledejte a vyberte své uživatelské jméno.
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:
Vyberte instanci služby Azure Spring Apps nasazenou ve vaší virtuální síti a pak v navigační nabídce vyberte Sítě .
Vyberte kartu injektáže virtuální sítě.
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.
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 |