即時串流 Azure Spring Apps 應用程式控制台記錄
注意
Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但是您暫時還是會在某些位置看到舊的名稱。我們正在致力更新螢幕擷取畫面、影片和圖表等資產。
本文適用於: ✔️ Java ✔️ C#
本文適用於: ✔️基本/標準✔️企業
本文說明如何在 Azure CLI 中啟用記錄串流,以取得即時應用程式主控台記錄以進行疑難解答。 您也可以使用診斷設定來分析 Azure Spring Apps 中的診斷數據。 若要深入了解,請參閱使用診斷設定分析記錄和計量。 如需串流記錄的詳細資訊,請參閱 即時 串流 Azure Spring Apps 作業記錄和 即時串流 Azure Spring Apps 受控元件記錄。
必要條件
- 具有 Azure Spring Apps 擴充功能的 Azure CLI 1.0.0 版或更高版本。 您可以使用下列命令來安裝擴充功能:
az extension add --name spring
- 具有執行中應用程式的 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新增至您的虛擬網路。 如果這是您關心的問題,請務必小心。
使用下列步驟在公用網路上啟用記錄串流端點:
啟用記錄串流公用端點之後,您可以從公用網路存取應用程式記錄,就像存取一般實例一樣。
保護對記錄串流公用端點的流量
記錄串流會使用與在 Azure Spring Apps 中設定預備環境中所述的測試端點相同的密鑰,來驗證您部署的連線。 因此,只有具有測試金鑰讀取許可權的使用者才能存取記錄串流。
若要確保應用程式在公開公用端點時的安全性,請使用網路安全組篩選服務的網路流量來保護端點。 如需詳細資訊,請參閱教學課程:使用 Azure 入口網站 篩選網路安全組的網路流量。 網路安全性群組包含安全性規則,用來允許或拒絕進出多種 Azure 資源類型的輸入和輸出網路流量。 針對每個規則,您可以指定來源與目的地、連接埠和通訊協定。
注意
如果您在啟用記錄串流公用端點之後,無法從因特網存取虛擬網路插入實例中的應用程式記錄,請檢查網路安全組,以查看您是否允許這類輸入流量。
下表顯示我們建議的基本規則範例。 您可以使用 之類的 nslookup
命令搭配端點 <service-name>.private.azuremicroservices.io
來取得服務的目標 IP 位址。
優先順序 | 名稱 | 連接埠 | 通訊協定 | 來源 | Destination | 動作 |
---|---|---|---|---|---|---|
100 | 規則名稱 | 80 | TCP | 網際網路 | 服務IP位址 | 允許 |
110 | 規則名稱 | 443 | TCP | 網際網路 | 服務IP位址 | 允許 |