適用於: Azure SQL Database、Azure SQL 受控實例
謹慎
Azure SQL 分析 (預覽) 可與 Azure 監視器整合,其中許多監視解決方案不再處於開發中狀態。 如需更多監視選項,請參閱 在 Azure SQL Database 和 Azure SQL 受控實例中監視和效能微調。
Azure SQL 分析(預覽版)是進階雲端監視解決方案,可在單一檢視中大規模監視所有 Azure SQL 資料庫的效能,以及跨多個訂用帳戶。 Azure SQL 分析會收集關鍵的效能計量,以視覺效果方式呈現,並有內建智慧功能可以執行效能疑難排解。
藉由使用這些收集的計量,您可以建立自定義監視規則和警示。 Azure SQL 分析可協助您識別應用程式堆疊每一層的問題。 Azure SQL 分析會使用 Azure 診斷 計量以及 Azure 監視器檢視來呈現單一 Log Analytics 工作區中所有 Azure SQL 資料庫的相關數據。 Azure 監視器可協助您收集、相互關聯及可視化結構化和非結構化數據。
連結的來源
Azure SQL 分析是一種僅限雲端的監視解決方案,可支援所有 Azure SQL 資料庫的診斷遙測串流處理。 因為 Azure SQL 分析不會使用代理程式來連線到 Azure 監視器,所以不支援監視裝載於內部部署或虛擬機中的 SQL Server。
已連接的來源 | 支持 | 說明 |
---|---|---|
診斷設定 | 是 | Azure 計量和記錄數據會由 Azure 直接傳送至 Azure 監視器記錄。 |
Azure 儲存體帳戶 | 否 | Azure 監視器不會從記憶體帳戶讀取數據。 |
Windows 代理程式 | 否 | Azure SQL 分析不會使用直接 Windows 代理程式。 |
Linux 代理程式 | 否 | Azure SQL 分析不會使用直接 Linux 代理程式。 |
System Center Operations Manager 管理群組 | 否 | Azure SQL 分析不會使用從 Operations Manager 代理程式到 Azure 監視器的直接連線。 |
Azure SQL 分析選項
下表概述 Azure SQL 分析儀錶板兩個版本的支援選項,一個適用於 Azure SQL Database,另一個適用於 Azure SQL 受控實例資料庫。
Azure SQL 分析選項 | 說明 | SQL 資料庫支援 | SQL 受控執行個體支援 |
---|---|---|---|
依類型排序的資源 | 計算所有受監視資源的觀點。 | 是的 | 是的 |
見解 | 提供分層深入分析效能的智能洞察。 | 是的 | 是的 |
錯誤 | 提供分層深入分析資料庫中的 SQL 錯誤。 | 是的 | 是的 |
暫停 | 提供對資料庫上發生的 SQL 逾時事件進行階層式深入分析。 | 是的 | 否 |
封鎖 | 提供逐層深入分析的功能,以查看發生在資料庫上的 SQL 封鎖事件。 | 是的 | 否 |
資料庫等候 | 提供階層式向下切入至資料庫層級上的 SQL 等候統計數據。 包含等候時間總計和每個等候類型的等候時間摘要。 | 是的 | 否 |
查詢持續時間 | 提供階層式向下切入查詢執行統計數據,例如查詢持續時間、CPU 使用量、數據 IO 使用量、記錄 IO 使用量。 | 是的 | 是的 |
查詢等候 | 依等候類別提供階層式向下切入查詢等候統計數據。 | 是的 | 是的 |
Azure SQL 分析的設定 (預覽)
使用 從解決方案庫新增 Azure 監視器解決方案 中所述的程式,將 Azure SQL 分析 (預覽) 新增至 Log Analytics 工作區。
設定 Azure SQL Database 以串流診斷遙測資料
在工作區中建立 Azure SQL 分析解決方案之後,您必須設定您想要監視 的每個 資源,將其診斷遙測串流至 Azure SQL 分析。 請遵循此頁面的詳細指示:
- 為您的資料庫啟用 Azure 診斷,以 將診斷遙測串流至 Azure SQL 分析。
上述頁面還提供了指示,說明如何在單一的 Azure SQL 分析工作區中,透過統一視圖監控多個 Azure 訂用帳戶。
使用 Azure SQL 分析 (預覽版)
從 Log Analytics 工作區的 舊版解決方案頁面進入您的 SQL Analytics 部署。
Azure SQL 分析提供兩個不同的檢視:一個用於監視 SQL Database,另一個用於監視 SQL 受控實例的檢視。
檢視 Azure SQL 分析數據
儀錶板包含從不同觀點監視的所有資料庫概觀。 要讓不同的觀點運作,您必須啟用 SQL 資源的適當度量或日誌,以串流至 Log Analytics 工作區。
如果某些度量或記錄未串流至 Azure 監視器,Azure SQL 分析中的磚塊就不會填入監視資訊。
SQL Database 視圖
選取資料庫的 Azure SQL 分析圖格之後,就會顯示監視儀錶板。
選取任何磁磚,將開啟深入分析的報表並顯示特定視角。 選取視角後,即會開啟向下切入報表。
此檢視中的每個視圖都會在訂用帳戶、伺服器、彈性集區和資料庫層級提供摘要。 此外,每個視角都會顯示與右側報告特有的視角。 從清單中選取訂用帳戶、伺服器、集區或資料庫會繼續深入分析。
SQL 受控實例檢視
選取資料庫的 Azure SQL 分析圖格之後,就會顯示監視儀錶板。
選取任何磁磚,將開啟深入分析的報表並顯示特定視角。 選取視角後,即會開啟向下切入報表。
選取 [SQL 受控實例] 檢視,會顯示跨受控實例執行之查詢使用率、實例資料庫和遙測的詳細數據。
Intelligent Insights 報告
Azure SQL Database Intelligent Insights 可讓您知道所有 Azure SQL 資料庫的效能發生什麼情況。 收集的所有 Intelligent Insights 都可以透過 Insights 介面來可視化和存取。
彈性集區和資料庫報告
彈性集區和資料庫都有自己的特定報告,其會顯示在指定時間內針對資源收集的所有數據。
查詢報告
透過查詢持續時間和查詢等待的觀點,您可以透過查詢報告將任何查詢的效能相互關聯。 此報表會比較不同資料庫的查詢效能,並輕鬆地找出執行所選查詢的資料庫與速度緩慢的資料庫。
權限
若要使用 Azure SQL 分析(預覽),用戶必須被授與 Azure 中讀者角色的最低權限。 不過,此角色不允許使用者查看查詢文字,或執行任何自動調整動作。 在 Azure 中,允許使用 Azure SQL 分析至最大範圍的更寬鬆角色包括擁有者、參與者、SQL DB 參與者或 SQL Server 參與者。 您也可以考慮在入口網站中建立自定義角色,其中包含僅使用 Azure SQL 分析所需的特定許可權,而且無法存取管理其他資源。
在入口網站中建立自定義角色
備註
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
辨識某些組織在 Azure 中強制執行嚴格的許可權控制,請尋找下列 PowerShell 腳本,以在 Azure 入口網站中建立自定義角色「SQL 分析監視作員」,並具備使用 Azure SQL 分析至最大範圍所需的最小讀取和寫入許可權。
以您的 Azure 訂用帳戶標識碼取代下列腳本中的 “{SubscriptionId}”,並在 Azure 中以擁有者或參與者角色身分登入腳本。
Connect-AzAccount
Select-AzSubscription {SubscriptionId}
$role = Get-AzRoleDefinition -Name Reader
$role.Name = "SQL Analytics Monitoring Operator"
$role.Description = "Lets you monitor database performance with Azure SQL Analytics as a reader. Does not allow change of resources."
$role.IsCustom = $true
$role.Actions.Add("Microsoft.SQL/servers/databases/read");
$role.Actions.Add("Microsoft.SQL/servers/databases/topQueries/queryText/*");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/write");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/write");
$role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/write");
$role.Actions.Add("Microsoft.Sql/servers/advisors/read");
$role.Actions.Add("Microsoft.Sql/servers/advisors/write");
$role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/read");
$role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/write");
$role.Actions.Add("Microsoft.Resources/deployments/write");
$role.AssignableScopes = "/subscriptions/{SubscriptionId}"
New-AzRoleDefinition $role
建立新角色之後,請將此角色指派給每位您需要授與自定義許可權以使用 Azure SQL Analytics 的使用者。
分析數據並建立警示
Azure SQL 分析中的數據分析是以 Log Analytics 語言 為基礎,用於自定義查詢和報告。 尋找從資料庫資源收集的可用數據描述,以在 可用的計量和記錄中自定義查詢。
Azure SQL 分析中的自動化警示是以撰寫 Log Analytics 查詢為基礎,以在符合條件時觸發警示。 以下是在 Azure SQL 分析中可設定警示的 Log Analytics 查詢範例。
建立 Azure SQL Database 的警示
您可以使用來自 Azure SQL Database 資源的數據輕鬆 建立警示 。 以下是您可以搭配記錄警示使用的一些實用 記錄查詢 :
CPU 使用率過高
AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/DATABASES/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart
備註
- 設定此警示的預先需求是受監視的資料庫會將基本計量串流至 Azure SQL 分析所使用的 Log Analytics 工作區。
- 將 MetricName 值
cpu_percent
替換為dtu_consumption_percent
,以獲得更高的 DTU 結果。
彈性集區上的高 CPU 使用率
AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/ELASTICPOOLS/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart
備註
- 設定此警示的預先需求是受監視的資料庫會將基本計量串流至 Azure SQL 分析所使用的 Log Analytics 工作區。
- 將 MetricName 的數值
cpu_percent
替換為dtu_consumption_percent
,以獲得較高的 DTU 結果。
過去 1 小時內平均記憶體高於 95%
let time_range = 1h;
let storage_threshold = 95;
AzureMetrics
| where ResourceId contains "/DATABASES/"
| where MetricName == "storage_percent"
| summarize max_storage = max(Average) by ResourceId, bin(TimeGenerated, time_range)
| where max_storage > storage_threshold
| distinct ResourceId
備註
- 設定此警示的預先需求是受監視的資料庫會將基本計量串流至 Azure SQL 分析所使用的 Log Analytics 工作區。
- 此查詢需要設定警示規則,以在查詢中有結果(> 0 個結果)時引發警示,表示某些資料庫上存在條件。 輸出是一個清單,包含在定義的
storage_threshold
中位於time_range
上方的資料庫資源。 - 輸出是一個清單,包含在定義的
storage_threshold
中位於time_range
上方的資料庫資源。
智能洞察警報
這很重要
如果資料庫執行良好,且未產生 Intelligent Insights,此查詢將會失敗,並出現錯誤訊息:無法解析名為 的 rootCauseAnalysis_s
純量表達式。 對於資料庫缺乏智能見解的所有情況,這種行為是預期的。
let alert_run_interval = 1h;
let insights_string = "hitting its CPU limits";
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| where TimeGenerated > ago(alert_run_interval)
| where rootCauseAnalysis_s contains insights_string
| distinct ResourceId
備註
- 設定此警示的預先需求是受監視的資料庫會將 SQLInsights 診斷記錄串流至 Azure SQL Analytics 所使用的 Log Analytics 工作區。
- 此查詢需要設定警示規則,才能以與
alert_run_interval
相同的頻率執行,以避免產生重複的結果。 當查詢中存在結果 (> 0 個結果) 時,應該設定規則來引發警示。 - 自定義
alert_run_interval
以指定時間範圍,檢查是否在被設定為將 SQLInsights 記錄串流至 Azure SQL Analytics 的資料庫中發生條件。 - 自定義insights_string,以擷取 Insights 根本原因分析文字的輸出。 這是 Azure SQL 分析使用者介面中顯示的相同文字,您可以從現有意見中使用。 或者,您可以使用下列查詢來查看訂用帳戶上產生之所有 Insights 的文字。 使用查詢的輸出來擷取不同的字串,以在 Insights 上設定警示。
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s
建立 SQL 受控實例的警報
記憶體高於 90%
let storage_percentage_threshold = 90;
AzureDiagnostics
| where Category =="ResourceUsageStats"
| summarize (TimeGenerated, calculated_storage_percentage) = arg_max(TimeGenerated, todouble(storage_space_used_mb_s) *100 / todouble (reserved_storage_mb_s))
by ResourceId
| where calculated_storage_percentage > storage_percentage_threshold
備註
- 設定此警示的預先需求是受監視的受控實例已將 ResourceUsageStats 記錄串流至 Azure SQL Analytics 所使用的 Log Analytics 工作區。
- 此查詢需要設定警示規則,以在查詢中有結果(> 0 個結果)時引發警示,指出條件存在於受控實例上。 輸出是受控實例上的記憶體百分比耗用量。
過去 1 小時內 CPU 平均耗用量高於 95%
let cpu_percentage_threshold = 95;
let time_threshold = ago(1h);
AzureDiagnostics
| where Category == "ResourceUsageStats" and TimeGenerated > time_threshold
| summarize avg_cpu = max(todouble(avg_cpu_percent_s)) by ResourceId
| where avg_cpu > cpu_percentage_threshold
備註
- 設定此警示的預先需求是受監視的受控實例已將 ResourceUsageStats 記錄串流至 Azure SQL Analytics 所使用的 Log Analytics 工作區。
- 此查詢需要設定警示規則,以在查詢中有結果(> 0 個結果)時引發警示,指出條件存在於受控實例上。 輸出是受控實例上所定義期間的平均CPU使用率百分比耗用量。
定價
雖然 Azure SQL 分析(預覽版)是免費的,但超過每個月配置的免費資料吸收單位的診斷遙測使用量會收費,請參閱 Log Analytics 定價。 所提供的資料擷取的免費單位每月可免費監控多個資料庫。 工作負載較重且較活躍的資料庫會比閑置的資料庫接收更多數據。 您可以在 Azure SQL 分析的導覽功能表上選取 [OMS 工作區],然後選取 [使用量] 和 [估計成本],輕鬆地監視 Azure SQL 分析中的數據擷取耗用量。
後續步驟
- 使用 Azure 監視器中的 記錄查詢 來檢視詳細的 Azure SQL 數據。
- 建立您自己的儀錶板 ,顯示 Azure SQL 數據。
- 在特定 Azure SQL 事件發生時建立警示。
- 使用 Azure 監視器來監視 Azure SQL Database
- 使用 Azure 監視器監視 Azure SQL 受控執行個體