監視整個解決方案
在此單元中,我們將探討如何監視整個解決方案。
簡介
在現今的複雜運算環境中啟用監視,需要從分散式系統的每個層級和元件中收集作業資料。 您需要此資料的深入解析,並將其與不同觀點合併,以支援組織中眾多的專案關係人。
Azure 監視器會從各種不同來源中收集資料,在其中您可將其用於分析、視覺效果和警示。 它可讓您深入解析所有受監視的資源,甚至是將其資料儲存在 Azure 監視器中的其他服務資料。
Log Analytics
記錄是系統內發生的事件。 記錄可包含不同種類的資料,而且可以是具有時間戳記的結構化文字或自由格式文字。 當環境中的事件產生記錄項目時,可能會零星地建立記錄。 負載過重的系統通常會產生更多的記錄磁碟區。
Azure 監視器中的記錄對於識別問題的根本原因非常有價值。 Azure 監視器記錄所收集的資料會儲存在一或多個 Log Analytics 工作區中。 您可以使用記錄查詢來從 Log Analytics 工作區擷取資料,這是處理資料並傳回結果的唯讀要求。 記錄查詢是以 Kusto 查詢語言 (KQL) 撰寫的,它是 Azure 資料總管所使用的相同查詢語言。
注意
您的 Azure Spring 應用程式範例應用程式已使用 Log Analytics 工作區進行設定。 如需有關 KQL 語法的詳細資訊,請參閱本訓練結尾的摘要單元。
使用 Log Analytics
實際上,有三種方式可存取您的應用程式記錄:Azure 儲存體、Azure 事件中樞和 Log Analytics。 我們在這裡將專注於 Log Analytics,因為它是最常用的方式,且已整合到 Azure Spring 應用程式以進行計量監視。
重要
Azure 監視器中的記錄資料擷取時間最多可能需要 15 分鐘的時間。 如果在 Log Analytics 中找不到資料,可能需要額外的時間來擷取 Azure Spring 應用程式記錄資料。
開啟 Azure 入口網站。
從 Azure 服務清單選取 [Azure Spring 應用程式]。
選取您的 Azure Spring 應用程式執行個體。
接著,在 [監視] 區段下,選取 [記錄]。
在 [查詢] 搜尋方塊中:
若要檢視記錄,請執行如下的查詢:
AppPlatformLogsforSpring | limit 50
若要檢視計量,請輸入如下的查詢:
AzureMetrics | limit 50
您可以藉由設定篩選條件來搜尋特定應用程式或執行個體的記錄:
AppPlatformLogsforSpring | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName" | limit 50
分析應用程式記錄檔
應用程式記錄檔提供關於應用程式健康情況、效能等重要資訊和詳細資訊記錄。 在下節中,我們提供查詢來幫助您了解您的應用程式的目前和過去狀態。
顯示來自 Azure Spring 應用程式的應用程式記錄檔
開啟 Azure 入口網站。
從 Azure 服務清單選取 [Azure Spring 應用程式]。
選取您的 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
資料庫監視
監視伺服器的相關資料,可協助您疑難排解並最佳化您的工作負載。 適用於 MySQL 的 Azure 資料庫提供多種計量,可讓您深入了解伺服器的行為。
在適用於 MySQL 的 Azure 資料庫中,使用者可以使用慢速查詢記錄檔。 不支援存取交易記錄。 您可以使用慢速查詢記錄來識別效能瓶頸以進行疑難排解。
在我們的範例應用程式中,您的慢速查詢記錄會設定為透過診斷記錄輸送至 Azure 監視器記錄,而且您可以對慢速查詢執行進一步分析。 以下是可協助您入門的範例查詢:
重要
Azure 監視器中的 MySQL 記錄資料擷取時間最多可能需要 30 分鐘的時間。 如果在 Log Analytics 中找不到資料,可能需要額外的時間來擷取 MySQL 記錄資料。
登入 Azure 入口網站。
選取您用於 Azure Spring 應用程式之適用於 MySQL 的 Azure 資料庫伺服器。
接著,在 [監視] 區段下,選取 [記錄]。
在 [查詢] 搜尋方塊中:
若要擷取超過一秒的所有查詢,請執行下列查詢:
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
您也可以使用稽核記錄來追蹤資料庫層級活動。 它通常用於合規性。 稽核記錄會與 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 失敗的詳細資料,以及使用者和工作階段計數。 您可以按頁面、用戶端作業系統和瀏覽器版本、地理位置和其他維度來對所有這些計量進行細分。 您可以設定有關失敗計數或頁面載入緩慢的警示,並透過在您的 JavaScript 程式碼中插入追蹤呼叫,您可以追蹤您的網頁應用程式的不同功能的使用情況。
您可以在任何網頁上使用 Application Insights;您只需新增一小段的 JavaScript 即可。 如果您的 Web 服務是 Java,則可以使用伺服器端 SDK 搭配用戶端 JavaScript SDK,來了解應用程式的效能。
注意
如需 UI 監視的詳細資訊,請參閱本訓練結尾的摘要單元。