監視整個解決方案

已完成

在此單元中,我們將探討如何監視整個解決方案。

簡介

在現今的複雜運算環境中啟用監視,需要從分散式系統的每個層級和元件中收集操作資料。 您需要此資料的深入見解,並將其與不同觀點合併,以支援組織中眾多的專案關係人。

Azure 監視器會從各種不同來源收集資料,在其中可將資料用於分析、視覺效果和警示。 它可讓您深入解析所有受監視的資源,甚至是將其資料儲存在 Azure 監視器中的其他服務資料。

Log Analytics

記錄是系統內發生的事件。 記錄可能包含各種不同資料,而且可以是具有時間戳記的結構化文字或自由格式文字。 偶爾會在環境中的事件產生記錄項目時建立記錄,而負載過重的系統通常會產生較多的記錄量。

Azure 監視器中的記錄對於識別問題的根本案例很有幫助。 Azure 監視器記錄收集的資料會儲存在一或多個 Log Analytics 工作區中。 您可以使用記錄查詢來從 Log Analytics 工作區擷取資料,這是處理資料並傳回結果的唯讀要求。 記錄查詢是以 Kusto 查詢語言 (KQL) 撰寫,它是 Azure 資料總管所使用的相同查詢語言。

注意

您的 Azure Spring Apps 範例應用程式是使用 Log Analytics 工作區設定。 如需有關 KQL 語法的詳細資訊,請參閱本訓練結尾的摘要單元。

使用 Log Analytics

實際上,有三種方式可存取您的應用程式記錄:Azure 儲存體、Azure 事件中樞和 Log Analytics。 我們在這裡將專注於 Log Analytics,因為它是最常用的方式,且已整合到 Azure Spring 應用程式以進行計量監視。

重要

Azure 監視器中的記錄資料擷取時間最多可能需要 15 分鐘的時間。 如果在 Log Analytics 中找不到資料,可能需要額外的時間來擷取 Azure Spring Apps 記錄資料。

  1. 開啟 Azure 入口網站

  2. 從 Azure 服務清單選取 "Azure Spring Apps"

  3. 選取您的 Azure Spring 應用程式執行個體

  4. 下一步,在 [監視] 區段下,選取 [記錄]

  5. 在 [查詢] 搜尋方塊中:

    Screenshot showing query for Azure Spring Apps logs.

    • 若要檢視記錄,請執行如下的查詢:

      AppPlatformLogsforSpring
      | limit 50
      
    • 若要檢視計量,輸入如下的查詢:

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

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

分析應用程式記錄檔

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

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

  1. 開啟 Azure 入口網站

  2. 從 Azure 服務清單選取 "Azure Spring Apps"

  3. 選取您的 Azure Spring 應用程式執行個體

  4. 下一步,在 [監視] 區段下,選取 [記錄]

  5. 在 [查詢] 搜尋方塊中:

    • 若要檢查 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
      

資料庫監視

監視伺服器的相關資料,可協助您疑難排解並最佳化您的工作負載。 適用於 MySQL 的 Azure 資料庫提供多種計量,可讓您深入了解伺服器的行為。

在適用於 MySQL 的 Azure 資料庫中,使用者可以使用慢速查詢記錄檔。 不支援存取交易記錄。 慢速查詢記錄檔可以用來找出效能瓶頸,以進行疑難排解。

在我們的範例應用程式中,您的慢速查詢記錄會設定為透過診斷記錄輸送至 Azure 監視器記錄,而且您可以對慢速查詢執行進一步分析。 以下是可協助您開始的範例查詢:

重要

Azure 監視器中的 MySQL 記錄資料擷取時間最多可能需要 30 分鐘的時間。 如果在 Log Analytics 中找不到資料,可能需要額外的時間來擷取 MySQL 記錄資料。

  1. 登入 Azure 入口網站。

  2. 選取您用於 Azure Spring Apps 的適用於 MySQL 的 Azure 資料庫伺服器

  3. 下一步,在 [監視] 區段下,選取 [記錄]

    Screenshot showing query for queries longer than 1 second

  4. 在 [查詢] 搜尋方塊中,

    • 擷取所有超過 1 秒的查詢

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      
    • 列出前五個時間最長的查詢

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | order by query_time_d desc
      | take 5
      
    • 依最小值、最大值、平均和標準差查詢時間來彙總慢速查詢

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s
      
    • 繪製特定伺服器上的慢速查詢分佈

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
      | render timechart
      
  5. 稽核記錄也可以用來追蹤資料庫層級的活動,而且通常會基於合規性來使用它。 稽核記錄會與 Azure 監視器診斷記錄整合。 在您的範例中,我們已在您的 MySQL 伺服器上啟用稽核記錄,讓您可以進一步分析您的已稽核事件。

    • 以下是可擷取一般 MySQL 記錄的範例查詢:

      AzureDiagnostics
      | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
      | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
      | order by TimeGenerated desc
      

UI 監視

如果您將 Application Insights 新增至頁面指令碼,您會取得頁面載入的時間,以及 AJAX 呼叫、計數和瀏覽器例外狀況與 AJAX 失敗的詳細資料,以及使用者和工作階段計數。 這些計量全都能依據頁面、用戶端 OS 和瀏覽器版本、地理位置及其他維度來劃分。 您可以對失敗計數或緩慢頁面載入設定警示。 而在 JavaScript 程式碼中插入追蹤呼叫,即可追蹤網頁應用程式的各種功能使用方式。 Application Insights 可以使用於任何網頁 - 您剛剛新增 JavaScript 的簡短片段。 如果您的 Web 服務是 Java,則可以使用伺服器端 SDK 搭配用戶端 JavaScript SDK,來了解應用程式的效能。

注意

如需 UI 監視的詳細資訊,請參閱本訓練結尾的摘要單元。