共用方式為


即時串流 Azure Spring Apps 應用程式控制台記錄

注意

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

本文適用於: ✔️ Java ✔️ C#

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

本文說明如何在 Azure CLI 中啟用記錄串流,以取得即時應用程式主控台記錄以進行疑難解答。 您也可以使用診斷設定來分析 Azure Spring Apps 中的診斷數據。 若要深入了解,請參閱使用診斷設定分析記錄和計量。 如需串流記錄的詳細資訊,請參閱 即時 串流 Azure Spring Apps 作業記錄和 即時串流 Azure Spring Apps 受控元件記錄。

必要條件

使用 Azure CLI 來產生尾日誌

本節提供使用 Azure CLI 產生尾日誌的範例。 若要避免重複指定您的資源群組和服務實例名稱,請使用下列命令來設定您的預設資源組名和叢集名稱:

az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>

下列範例會省略資源群組和服務名稱。

使用單一實例檢視應用程式的尾日誌

如果名為 auth-service 的應用程式只有一個實例,您可以使用下列命令來檢視應用程式實例的記錄:

az spring app logs --name <application-name>

此命令會傳回類似下列範例的記錄,其中 auth-service 是應用程式名稱。

...
2020-01-15 01:54:40.481  INFO [auth-service,,,] 1 --- [main] o.apache.catalina.core.StandardService  : Starting service [Tomcat]
2020-01-15 01:54:40.482  INFO [auth-service,,,] 1 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.22]
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/uaa]  : Initializing Spring embedded WebApplicationContext
2020-01-15 01:54:40.760  INFO [auth-service,,,] 1 --- [main] o.s.web.context.ContextLoader  : Root WebApplicationContext: initialization completed in 7203 ms

...

檢視具有多個實例之應用程式的尾日誌

如果名為 auth-service的應用程式有多個實例存在,您可以使用 選項來檢視實例記錄 -i/--instance 檔。

首先,執行下列命令以取得應用程式實例名稱:

az spring app show --name auth-service --query properties.activeDeployment.properties.instances --output table

這個指令會產生類似下列輸出的結果:

Name                                         Status    DiscoveryStatus
-------------------------------------------  --------  -----------------
auth-service-default-12-75cc4577fc-pw7hb  Running   UP
auth-service-default-12-75cc4577fc-8nt4m  Running   UP
auth-service-default-12-75cc4577fc-n25mh  Running   UP

然後,您可以使用 選項串流應用程式實例 -i/--instance 的記錄,如下所示:

az spring app logs --name auth-service --instance auth-service-default-12-75cc4577fc-pw7hb

您也可以從 Azure 入口網站 取得應用程式實例的詳細數據。 在 Azure Spring 應用程式服務的左側瀏覽窗格中選取 [應用程式] 之後,請選取 [應用程式執行個體]

持續串流新的記錄

依預設,az spring app logs 只會列印串流至應用程式主控台的現有記錄,然後結束。 如果您想要串流新的記錄,請新增 -f/--follow 自變數,如下列範例所示:

az spring app logs --name auth-service --follow

當您使用 --follow 自變數來尾端立即記錄時,除非應用程式持續寫入記錄,否則 Azure Spring Apps 記錄串流服務會每分鐘傳送活動訊號記錄至用戶端。 活動訊號記錄訊息使用下列格式: 2020-01-15 04:27:13.473: No log from server

使用下列命令來檢查支援的所有記錄選項:

az spring app logs --help

格式化 JSON 結構化記錄

注意

格式化 JSON 結構化記錄需要 spring extension 2.4.0 版或更新版本。

結構化應用程式記錄會以 JSON 格式顯示,可能難以讀取。 您可以使用 --format-json 自變數,將 JSON 格式的記錄格式化成更容易閱讀的格式。 如需詳細資訊,請參閱 Azure Spring Apps 的結構化應用程式記錄。

下列範例示範如何使用 --format-json 自變數:

# Raw JSON log
$ az spring app logs --name auth-service
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Disable delta property : false"}
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Single vip registry refresh property : null"}

# Formatted JSON log
$ az spring app logs --name auth-service --format-json
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Disable delta property : false
2021-05-26T03:35:27.533Z  INFO [           main] com.netflix.discovery.DiscoveryClient   : Single vip registry refresh property : null

--format-json 變數也接受選擇性的自訂格式,使用格式字串語法。 如需詳細資訊,請參閱 格式字串語法

下列範例示範如何使用格式字串語法:

# Custom format
$ az spring app logs --name auth-service --format-json="{message}{n}"
Disable delta property : false
Single vip registry refresh property : null

使用的預設格式為:

{timestamp} {level:>5} [{thread:>15.15}] {logger{39}:<40.40}: {message}{n}{stackTrace}

在虛擬網路插入實例中串流 Azure Spring Apps 應用程式記錄

針對部署在自定義虛擬網路中的 Azure Spring Apps 實例,您可以預設從專用網存取記錄串流。 如需詳細資訊,請參閱在虛擬網路中部署 Azure Spring Apps

Azure Spring Apps 也可讓您使用 Azure 入口網站 或 Azure CLI,從公用網路存取即時應用程式記錄。

注意

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

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

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

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

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

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

啟用記錄串流公用端點之後,您可以從公用網路存取應用程式記錄,就像存取一般實例一樣。

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

記錄串流會使用與在 Azure Spring Apps 中設定預備環境中所述的測試端點相同的密鑰,來驗證您部署的連線。 因此,只有具有測試金鑰讀取許可權的使用者才能存取記錄串流。

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

注意

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

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

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

下一步