Share via


即時串流 Azure Spring Apps 受控元件記錄

注意

Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但是您暫時還是會在某些位置看到舊的名稱。我們正在致力更新螢幕擷取畫面、影片和圖表等資產。

本文適用於:❌ 基本/標準✔️企業

本文說明如何使用 Azure CLI 來取得受控元件的實時記錄以進行疑難解答。 您也可以使用診斷設定來分析 Azure Spring Apps 中的診斷數據。 若要深入了解,請參閱使用診斷設定分析記錄和計量

如需 Azure Spring Apps 中應用程式的串流記錄,請參閱 即時串流 Azure Spring Apps 應用程式控制台記錄。

必要條件

支援的受控元件

下表列出目前支援的受控元件及其子元件:

受控元件 子元件
應用程式組態服務 application-configuration-service
flux-source-controller (ACS Gen2 版支援)
Spring Cloud Gateway spring-cloud-gateway
spring-cloud-gateway-operator

您可以使用下列命令來列出所有子元件:

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 Gateway Azure Spring Apps Spring Cloud 閘道記錄讀取者角色 Microsoft.AppPlatform/Spring/SpringCloudGateway/logstream/action

使用下列步驟,使用 Azure 入口網站 指派 Azure 角色:

  1. 開啟 Azure 入口網站

  2. 開啟您的 Azure Spring Apps 服務實例。

  3. 在瀏覽窗格中,選取 [存取控制 (IAM)]。

  4. 在 [存取控制 (IAM) 頁面上,選取 [新增],然後選取 [新增角色指派]。

    顯示 [存取控制 ][IAM] 頁面的 Azure 入口網站 螢幕快照,其中已醒目提示 [新增角色指派] 選項。

  5. 在 [ 新增角色指派 ] 頁面上的 [ 名稱] 清單中,搜尋並選取目標角色,然後選取 [ 下一步]。

    顯示 [新增角色指派] 頁面的螢幕快照,其中已醒目提示 [應用程式設定服務記錄讀取器角色名稱]。 Azure 入口網站

  6. 選取 [ 成員 ],然後搜尋並選取您的用戶名稱。

  7. 選取檢閱+指派

列出元件中的所有實例

使用下列命令來列出元件中的所有實例:

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

在一個命令中檢視所有實例的尾日誌

若要檢視所有實例的尾日誌,請使用 --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 Apps 實例,您可以預設從專用網存取記錄串流。 如需詳細資訊,請參閱在虛擬網路中部署 Azure Spring Apps

Azure Spring Apps 也可讓您從公用網路存取即時受控元件記錄。

注意

在公用網路上啟用記錄串流端點,會將公用輸入IP新增至您的虛擬網路。 如果這是您關心的問題,請務必小心。

使用下列步驟在公用網路上啟用記錄串流端點:

  1. 選取部署在虛擬網路中的 Azure Spring Apps 服務實例,然後在導覽功能表中選取 [網络]。

  2. 選取 [ Vnet 插入 ] 索引標籤。

  3. 將公用網路上 Dataplane 資源的狀態切換為 [啟用],以在公用網路上啟用記錄串流端點。 此程序會需要幾分鐘的時間。

    顯示 [網络] 頁面的 Azure 入口網站 螢幕快照,其中已選取 [Vnet 插入式] 索引卷標,並醒目提示 [疑難解答] 區段。

啟用記錄數據流公用端點之後,您可以從公用網路存取受控元件記錄,就像存取一般實例一樣。

保護對記錄串流公用端點的流量

受控元件的記錄串流會使用 Azure RBAC 來驗證與元件的連線。 因此,只有具有適當角色的使用者才能存取記錄。

若要確保受控元件在公開公用端點時的安全性,請使用網路安全組來篩選您服務的網路流量來保護端點。 如需詳細資訊,請參閱教學課程:使用 Azure 入口網站 篩選網路安全組的網路流量。 網路安全性群組包含安全性規則,用來允許或拒絕進出多種 Azure 資源類型的輸入和輸出網路流量。 針對每個規則,您可以指定來源與目的地、連接埠和通訊協定。

注意

如果您在啟用記錄串流公用端點之後,無法從因特網存取虛擬網路插入實例中的受控元件記錄,請檢查您的網路安全組,以查看您是否允許這類輸入流量。

下表顯示我們建議的基本規則範例。 您可以使用 之類的 nslookup 命令搭配端點 <service-name>.private.azuremicroservices.io 來取得服務的目標 IP 位址。

優先順序 名稱 連接埠 通訊協定 來源 Destination 動作
100 規則名稱 80 TCP 網際網路 服務IP位址 允許
110 規則名稱 443 TCP 網際網路 服務IP位址 允許

下一步