使用診斷設定分析記錄和計量

注意

Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但在我們努力更新資產,例如螢幕快照、影片和圖表時,您會在某些地方看到舊名稱一段時間。

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

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

本文說明如何在 Azure Spring Apps 中分析診斷數據。

使用 Azure Spring Apps 的診斷功能,您可以使用下列任何服務來分析記錄和計量:

  • 使用 Azure Log Analytics。 將記錄導出至 Log Analytics 時會有延遲。
  • 將記錄儲存至記憶體帳戶以進行稽核或手動檢查。 您可以指定保留時間(以天為單位)。
  • 將記錄串流至事件中樞,以供第三方服務或自定義分析解決方案擷取。

選擇您要監視的記錄類別和計量類別。

提示

如果您只想串流記錄,您可以使用 Azure CLI 命令 az spring app logs

記錄

Log 描述
ApplicationConsole 所有客戶應用程式的控制台記錄。
SystemLogs 可用的 LogType 值為 ConfigServer(僅限基本/標準)、 ServiceRegistry(所有方案)、 ApiPortal(僅限企業方案)、(僅限企業方案)、 ApplicationConfigurationService(僅限企業方案), SpringCloudGateway 以及 SpringCloudGatewayOperator (僅限企業方案)
IngressLogs 所有客戶應用程式的輸入記錄 ,只能存取記錄。
BuildLogs 針對每個建置階段,建置所有客戶應用程式的記錄。

計量

如需計量的完整清單,請參閱 Azure Spring Apps 計量的 [用戶計量選項] 區段。

若要開始使用,請啟用其中一項服務來接收數據。 若要瞭解如何設定Log Analytics,請參閱 開始使用 Azure 監視器中的Log Analytics。

設定診斷設定

  1. 在 Azure 入口網站 中,移至您的 Azure Spring Apps 實例。

  2. 選取 [診斷設定 ] 選項,然後選取 [ 新增診斷設定]。

  3. 輸入設定的名稱,然後選擇您要傳送記錄的位置。 您可以選擇下列三個選項的任何組合:

    • 封存至記憶體帳戶
    • 串流至事件中樞
    • 傳送至 Log Analytics
    • 傳送至合作夥伴解決方案
  4. 選擇您要監視的記錄類別和計量類別,然後指定保留時間(以天為單位)。 保留時間僅適用於記憶體帳戶。

  5. 選取 [儲存]

注意

在發出記錄或計量時,以及記錄或計量出現在記憶體帳戶、事件中樞或 Log Analytics 之間,可能會有長達 15 分鐘的差距。 如果 Azure Spring Apps 實例遭到刪除或移動,此作業將不會串聯至 診斷設定 資源。 必須在 針對其父系 Azure Spring Apps 實例的作業之前手動刪除診斷設定 資源。 否則,如果新的 Azure Spring Apps 實例是以與已刪除的資源識別符相同的資源標識碼布建,或將 Azure Spring Apps 實例移回,則先前 的診斷設定 資源會繼續擴充它。

檢視記錄和計量

有各種方法可檢視記錄和計量,如下列標題所述。

使用 [記錄] 刀鋒視窗

  1. 在 Azure 入口網站 中,移至您的 Azure Spring Apps 實例。

  2. 若要開啟 [ 記錄搜尋 ] 窗格,請選取 [ 記錄]。

  3. 在 [ 數據表 ] 搜尋方塊中

    • 若要檢視記錄,請輸入簡單的查詢,例如:
    AppPlatformLogsforSpring
    | limit 50
    
    • 若要檢視計量,請輸入簡單的查詢,例如:
    AzureMetrics
    | limit 50
    
  4. 若要檢視搜尋結果,請選取 [ 執行]。

使用 Log Analytics

  1. 在 Azure 入口網站 的左窗格中,選取 [Log Analytics]。

  2. 選取您在新增診斷設定時所選擇的Log Analytics工作區。

  3. 若要開啟 [ 記錄搜尋 ] 窗格,請選取 [ 記錄]。

  4. 在 [ 數據表 ] 搜尋方塊中,

    • 若要檢視記錄,請輸入簡單的查詢,例如:
    AppPlatformLogsforSpring
    | limit 50
    
    • 若要檢視計量,請輸入簡單的查詢,例如:
    AzureMetrics
    | limit 50
    
  5. 若要檢視搜尋結果,請選取 [ 執行]。

  6. 您可以藉由設定篩選條件來搜尋特定應用程式或執行個體的記錄:

    AppPlatformLogsforSpring
    | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName"
    | limit 50
    

    注意

    == 區分大小寫,但不 =~ 區分大小寫。

若要深入瞭解Log Analytics中使用的查詢語言,請參閱 Azure 監視器記錄查詢。 若要從集中式客戶端查詢所有 Log Analytics 記錄,請參閱 Azure 數據總管

使用您的記憶體帳戶

  1. 在 Azure 入口網站 中,在左側導覽面板或搜尋方塊中尋找 儲存體 帳戶
  2. 選取您在新增診斷設定時所選擇的記憶體帳戶。
  3. 若要開啟 [ Blob 容器 ] 窗格,請選取 [Blob]。
  4. 若要檢閱應用程序記錄,請搜尋名為 insights-logs-applicationconsole 的容器。
  5. 若要檢閱應用程式計量,請搜尋名為 insights-metrics-pt1m 的容器。

若要深入瞭解如何將診斷資訊傳送至記憶體帳戶,請參閱在 Azure 儲存體 中儲存和檢視診斷數據。

使用事件中樞

  1. 在 Azure 入口網站 中,在左側導覽面板或搜尋方塊中尋找事件中樞

  2. 搜尋並選取您在新增診斷設定時所選擇的事件中樞。

  3. 若要開啟 [事件中 樞清單 ] 窗格,請選取 [事件中樞]。

  4. 若要檢閱應用程序記錄,請搜尋名為 insights-logs-applicationconsole 的事件中樞。

  5. 若要檢閱應用程式計量,請搜尋名為 insights-metrics-pt1m 的事件中樞。

若要深入瞭解如何將診斷資訊傳送至事件中樞,請參閱使用事件中樞串流 Azure 診斷 熱路徑中的數據。

分析記錄

Azure Log Analytics 使用 Kusto 引擎執行,因此您可以查詢記錄以進行分析。 如需使用 Kusto 查詢記錄的快速簡介,請檢閱 Log Analytics 教學課程

應用程式記錄檔提供關於應用程式健康情況、效能等重要資訊和詳細資訊記錄。 在接下來的幾節中,有一些簡單的查詢可協助您了解應用程式的目前和過去狀態。

顯示來自 Azure Spring 應用程式的應用程式記錄檔

若要檢查 Azure Spring 應用程式的應用程式記錄檔清單 (依時間排序,最新記錄檔先顯示),請執行下列查詢:

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| sort by TimeGenerated desc

顯示包含錯誤或例外狀況的記錄專案

若要檢閱提及錯誤或例外狀況的未排序記錄項目,執行下列查詢:

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| where Log contains "error" or Log contains "exception"

使用此查詢來尋找錯誤,或修改查詢詞彙來尋找特定的錯誤碼或例外狀況。

顯示應用程式在過去一小時內回報的錯誤和例外狀況數目

若要建立餅圖,以顯示應用程式在過去一小時內記錄的錯誤和例外狀況數目,請執行下列查詢:

AppPlatformLogsforSpring
| where TimeGenerated > ago(1h)
| where Log contains "error" or Log contains "exception"
| summarize count_per_app = count() by AppName
| sort by count_per_app desc
| render piechart

顯示包含特定主機的輸入記錄專案

若要檢閱特定主機所產生的記錄專案,請執行下列查詢:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and Host == "ingress-asc.test.azuremicroservices.io" 
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

使用此查詢來尋找此特定主機輸入記錄的回應 StatusRequestTime和其他屬性。

顯示特定 requestId 的輸入記錄專案

若要檢閱特定 requestId<request_ID>的記錄專案,請執行下列查詢:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and ReqId == "<request_ID>" 
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

顯示特定應用程式的組建記錄專案

若要在建置程式期間檢閱特定應用程式的記錄專案,請執行下列查詢:

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>"
| sort by TimeGenerated

在特定建置階段中顯示特定應用程式的組建記錄專案

若要檢閱特定建置階段中特定應用程式的記錄專案,請執行下列查詢。 將 <app-name> 佔位元取代為您的應用程式名稱。 將 <build-stage> 佔位元取代為下列其中一個值,代表建置程式的階段: preparedetect、、 restoreanalyzebuildexportcompletion

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>" and ContainerName == "<build-stage>"
| sort by TimeGenerated

在企業方案中顯示 VMware Spring Cloud 閘道記錄

若要檢閱企業方案中 VMware Spring Cloud Gateway 記錄的記錄專案,請執行下列查詢:

AppPlatformSystemLogs 
| where LogType == "SpringCloudGateway"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

另一個名為 Spring Cloud Gateway Operator 的元件會控制 Spring Cloud 閘道和路由的生命週期。 如果您遇到路由未生效的任何問題,請檢查此元件的記錄。 若要在企業方案中檢閱 VMware Spring Cloud Gateway Operator 的記錄專案,請執行下列查詢:

AppPlatformSystemLogs 
| where LogType == "SpringCloudGatewayOperator"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

在企業方案中顯示 Tanzu 記錄的應用程式組態服務

若要在企業方案中檢閱 Tanzu 記錄的應用程式組態服務記錄專案,請執行下列查詢:

AppPlatformSystemLogs 
| where LogType == "ApplicationConfigurationService"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

顯示企業方案中的 Tanzu 服務登錄記錄

若要檢閱企業方案中 Tanzu Service Registry 記錄的記錄專案,請執行下列查詢:

AppPlatformSystemLogs 
| where LogType == "ServiceRegistry"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

在企業方案中顯示 VMware Tanzu 記錄的 API 入口網站

若要在企業方案中檢閱適用於 VMware Tanzu 記錄的 API 入口網站記錄專案,請執行下列查詢:

AppPlatformSystemLogs 
| where LogType == "ApiPortal"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

深入瞭解查詢應用程式記錄

Azure 監視器提供使用 Log Analytics 查詢應用程式記錄的廣泛支援。 若要深入瞭解此服務,請參閱 開始使用 Azure 監視器中的記錄查詢。 如需建置查詢以分析應用程式記錄的詳細資訊,請參閱 Azure 監視器中的記錄查詢概觀。

常見問題集 (FAQ)

如何? 將多行 Java 堆疊追蹤轉換成單行?

有一個因應措施可將多行堆疊追蹤轉換成單行。 您可以修改 Java 記錄輸出以重新格式化堆疊追蹤訊息,以標記取代換行符。 如果您使用 Java Logback 連結庫,您可以藉由新增 %replace(%ex){'[\r\n]+', '\\n'}%nopex 來重新格式化堆棧追蹤訊息,如下所示:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                level: %level, message: "%logger{36}: %msg", exceptions: "%replace(%ex){'[\r\n]+', '\\n'}%nopex"%n
            </pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

接著,您可以使用 Log Analytics 中的換行符取代令牌,如下所示:

AppPlatformLogsforSpring
| extend Log = array_strcat(split(Log, '\\n'), '\n')

您可以針對其他 Java 記錄庫使用相同的策略。

下一步