即時串流 Azure Spring Apps 受控元件記錄
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於: ❎基本/標準 ✅ 企業
本文說明如何使用 Azure CLI 來取得受控元件的實時記錄以進行疑難解答。 您也可以使用診斷設定,分析 Azure Spring 應用程式中的診斷資料。 若要深入了解,請參閱使用診斷設定分析記錄和計量。 如需串流記錄的詳細資訊,請參閱 即時 串流 Azure Spring Apps 應用程式控制台記錄和 即時串流 Azure Spring Apps 作業記錄。
必要條件
- 具有 Azure Spring Apps 擴充功能的 Azure CLI 1.24.0 版或更高版本。 您可以使用下列命令來安裝擴充功能:
az extension add --name spring
。
支援的受控元件
下表列出目前支援的受控元件及其子元件:
受控元件 | 子元件 |
---|---|
應用程式設定服務 | application-configuration-service flux-source-controller (ACS Gen2 版支援) |
Spring Cloud 閘道 | spring-cloud-gateway spring-cloud-gateway-operator |
Spring Cloud Config Server | config-server |
您可以使用下列命令來列出所有子元件:
az spring component list
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name>
指派 Azure 角色
若要串流受控元件的記錄,您必須將相關的 Azure 角色指派給您。 下表列出這些角色獲授與許可權的必要角色和作業:
受控元件 | 必要角色 | Operations |
---|---|---|
應用程式設定服務 | Azure Spring Apps 應用程式組態服務記錄讀取者角色 | Microsoft.AppPlatform/Spring/ApplicationConfigurationService/logstream/action |
Spring Cloud 閘道 | Azure Spring Apps Spring Cloud 閘道記錄讀取者角色 | Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action |
Spring Cloud Config Server | Azure Spring Apps Spring Cloud Config 伺服器記錄讀取器角色 | Microsoft.AppPlatform/Spring/configService/logstream/action |
使用下列步驟,使用 Azure 入口網站 指派 Azure 角色:
開啟 Azure 入口網站。
開啟您的 Azure Spring Apps 服務實例。
在瀏覽窗格中,選取 [存取控制 (IAM)]。
在 [存取控制 (IAM) 頁面上,選取 [新增],然後選取 [新增角色指派]。
在 [ 新增角色指派 ] 頁面上的 [ 名稱] 清單中,搜尋並選取目標角色,然後選取 [ 下一步]。
選取 [ 成員 ],然後搜尋並選取您的用戶名稱。
選取檢閱+指派。
列出元件中的所有實例
使用下列命令來列出元件中的所有實例:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component <component-name>
例如,若要列出 ACS Gen2 版本中的所有實例 flux-source-controller
,請使用下列命令:
az spring component instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--component flux-source-controller
檢視尾日誌
本節提供使用 Azure CLI 來產生結尾記錄的範例。
檢視特定實例的尾日誌
若要檢視特定實例的尾日誌,請使用 az spring component logs
命令搭配 -i/--instance
自變數,如下一節所示。
檢視 application-configuration-service 實例的尾日誌
使用下列命令來檢視 的尾紀錄 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>
針對 ACS Gen2,此命令會傳回類似下列範例的記錄:
...
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)
...
檢視 flux-source-controller 實例的尾日誌
使用下列命令來檢視 的尾紀錄 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>
此指令會傳回類似下列範例的記錄:
...
{"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"}
...
檢視 spring-cloud-gateway 實例的尾日誌
使用下列命令來檢視 的尾紀錄 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>
此指令會傳回類似下列範例的記錄:
...
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)
...
檢視 spring-cloud-gateway-operator 實例的尾日誌
使用下列命令來檢視 的尾紀錄 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>
此指令會傳回類似下列範例的記錄:
...
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)
...
檢視 config-server 實例的尾日誌
使用下列命令來檢視 的尾紀錄 config-server
:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name config-server \
--instance <instance-name>
此指令會傳回類似下列範例的記錄:
...
{"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)"}
...
在一個命令中檢視所有實例的尾日誌
若要檢視所有實例的尾日誌,請使用 --all-instances
自變數,如下列命令所示。 實例名稱是每個記錄行的前置詞。 當有多個實例時,記錄會以批次方式列印每個實例,因此一個實例的記錄不會與另一個實例的記錄交錯。
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances
持續串流新記錄
根據預設, az spring component logs
只會列印串流至控制台的現有記錄,然後結束。 如果您想要串流新的記錄,請新增 -f/--follow
自變數。
當您使用 -f/--follow
選項來尾端立即記錄時,除非元件持續寫入記錄,否則 Azure Spring Apps 記錄串流服務會每分鐘將活動訊號記錄傳送至用戶端。 活動訊號記錄訊息會使用下列格式:2023-12-18 09:12:17.745: No log from server
。
特定實例的串流記錄
使用下列命令來串流特定實體的記錄:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--instance <instance-name> \
--follow
所有實例的串流記錄
使用下列命令來串流所有實體的記錄:
az spring component logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <component-name> \
--all-instances \
--follow
當您串流元件中多個實例的記錄時,一個實例的記錄會與其他實例的記錄交錯。
在虛擬網路插入實例中串流記錄
針對部署在自訂虛擬網路中的 Azure Spring 應用程式執行個體,您可以根據預設從私人網路存取記錄串流。 如需詳細資訊,請參閱在虛擬網路中部署 Azure Spring Apps
Azure Spring Apps 也可讓您從公用網路存取即時受控元件記錄。
注意
在公用網路上啟用記錄串流端點,會將公用輸入 IP 新增至您的虛擬網路。 如果您對此有所顧慮,使用時請務必小心。
使用下列步驟在公用網路上啟用記錄串流端點:
啟用記錄數據流公用端點之後,您可以從公用網路存取受控元件記錄,就像存取一般實例一樣。
保護記錄串流公用端點的流量
受控元件的記錄串流會使用 Azure RBAC 來驗證與元件的連線。 因此,只有具有適當角色的使用者才能存取記錄。
若要確保受控元件在公開公用端點時的安全性,請使用網路安全組來篩選您服務的網路流量來保護端點。 如需詳細資訊,請檢閱教學課程:使用 Azure 入口網站透過網路安全性群組篩選網路流量。 網路安全性群組包含安全性規則,用來允許或拒絕進出多種 Azure 資源類型的輸入和輸出網路流量。 針對每個規則,您可以指定來源與目的地、連接埠和通訊協定。
注意
如果您在啟用記錄串流公用端點之後,無法從因特網存取虛擬網路插入實例中的受控元件記錄,請檢查您的網路安全組,以查看您是否允許這類輸入流量。
下表顯示我們建議的基本規則範例。 您可以使用 nslookup
之類的命令搭配端點 <service-name>.private.azuremicroservices.io
來取得服務的目標 IP 位址。
優先順序 | 名稱 | 連接埠 | 通訊協定 | 來源 | Destination | 動作 |
---|---|---|---|---|---|---|
100 | 規則名稱 | 80 | TCP | 網際網路 | 服務 IP 位址 | 允許 |
110 | 規則名稱 | 443 | TCP | 網際網路 | 服務 IP 位址 | 允許 |