啟用 SQL Insights (預覽版)
適用於: Azure SQL 資料庫 Azure SQL 受控執行個體
重要
SQL Insights (預覽版) 將於 2024 年 12 月 31 日淘汰。 建議您依據該日期轉換至 Azure SQL (預覽版) 的資料庫監看員或另一個資料庫監視解決方案。
資料庫監看員是下列案例建議使用的監視解決方案:需要低資料收集延遲、資產層級監視、完整的監視資料,包括查詢層級詳細資料,以及針對所收集監視資料進行進階分析的支援。 目前,資料庫監看員支援 Azure SQL 資料庫和 Azure SQL 受控執行個體。
2024 年 12 月 31 日之後,SQL Insights (預覽版) 將不受支援,且無法在 Azure 入口網站 中使用。 您會在 Log Analytics 工作區中保留 SQL Insights 收集的任何現有監視數據。
本文說明如何啟用 SQL Insights (預覽版),以監視您的 SQL 部署。 監視是從 Azure 虛擬機器執行,此虛擬機器會連線到您的 SQL 部署,並使用動態管理檢視 (DMV) 來收集監視資料。 您可以使用監視設定檔來控制收集的資料集和收集頻率。
若要藉由使用 Resource Manager 範本建立監視設定檔和虛擬機器來啟用 SQL Insights (預覽版),請參閱 SQL Insights (預覽版) 的 Resource Manager 範本範例。
建立 Log Analytics 工作區
SQL Insights 會將其資料儲存在一或多個 Log Analytics 工作區。 您必須先建立工作區或選取現有的工作區,才能啟用 SQL 深入解析。 單一工作區可與多個監視設定檔搭配使用,但工作區與設定檔必須位於相同的 Azure 區域。 若要啟用並存取 SQL Insights 中的功能,您必須在工作區中具備 Log Analytics 參與者角色。
建立監視使用者
在想監視的 SQL 部署上,您需要有使用者 (登入)。 請依照下列程序進行不同類型的 SQL 部署。
下列指示涵蓋您可以監視的每個 SQL 類型的程序。 若要一次在數個 SQL 資源上使用指令碼來完成此作業,請參閱下列讀我檔案及範例指令碼。
注意
SQL Insights (預覽版) 不支援下列 Azure SQL Database 情節:
- 彈性集區:無法收集彈性集區的計量。 無法為彈性集區內的資料庫收集計量。
- 低服務層級:無法為基本、S0 和 S1 服務物件上的資料庫收集計量
SQL Insights (預覽版) 對於下列 Azure SQL Database 情節的支援有限:
- 無伺服器層級:可使用無伺服器計算層為資料庫收集計量。 不過,收集計量的程序會重設自動暫停延遲計時器,以防止資料庫進入自動暫停狀態。
透過 Azure 入口網站中的 SQL Server Management Studio、查詢編輯器 (預覽版),或其他 SQL 用戶端工具,連線至 Azure SQL 資料庫。
執行下列指令碼,以建立具有必要權限的使用者。 以使用者名稱取代 user,並以強式密碼取代 mystrongpassword。
CREATE USER [user] WITH PASSWORD = N'mystrongpassword';
GO
GRANT VIEW DATABASE STATE TO [user];
GO
確認使用者已建立完成。
select name as username,
create_date,
modify_date,
type_desc as type,
authentication_type_desc as authentication_type
from sys.database_principals
where type not in ('A', 'G', 'R', 'X')
and sid is not null
order by username
建立 Azure 虛擬機器
您必須建立一或多個 Azure 虛擬機器,以用於收集資料來監視 SQL。
注意
監視設定檔會指定要從您想要監視的不同類型 SQL 收集哪些資料。 每個監視虛擬機器只能有一個與其相關的監視設定檔。 如果您需要多個監視設定檔,則必須為每個設定檔建立虛擬機器。
Azure 虛擬機器需求
Azure 虛擬機器具有下列需求:
- 作業系統:使用 Azure Marketplace 映像的 Ubuntu 18.04。 不支援自訂映像。 若要取得此 Ubuntu 版本的延長安全性維護 (ESM),建議使用 Ubuntu Pro 18.04 LTS 市集映像。 如需詳細資訊,請參閱 Azure 中對 Linux 及開放原始碼技術的支援。
- 建議的 Azure 虛擬機器大小下限:Standard_B2 (2 個 CPU、4-GiB 記憶體)
- 部署在 Azure 監視器代理程式所支援的任何 Azure 區域中,並符合所有 Azure 監視器代理程式的必要條件。
注意
Standard_B2 (2 個 CPU,4 GiB 記憶體) 虛擬機器大小可支援最多 100 個連接字串。 您不應該為單一虛擬機器配置超過 100 個連線。
根據您 SQL 資源的網路設定,虛擬機器可能需要放置在與您 SQL 資源相同的虛擬網路中,以便建立網路連線來收集監視資料。
設定網路設定
每種類型的 SQL 都會提供方法,讓監視虛擬機器安全地存取 SQL。 下列各節涵蓋以 SQL 部署類型為基礎的選項。
SQL 深入解析支援透過其公用端點以及其虛擬網路存取您的 Azure SQL Database。
若要透過公用端點存取,請在[防火牆設定]頁面和在 Azure 入口網站的[IP 防火牆設定]區段下新增規則。 若要指定虛擬網路的存取權,您可以設定虛擬網路防火牆規則,並設定 Azure 監視器代理程式所需的服務標籤。
將監視密碼儲存在 Azure Key Vault
我們強烈建議您採用安全性最佳做法,將 SQL 使用者 (登入) 密碼儲存在 Key Vault 中,而不是直接輸入監視設定檔連接字串。
在為 SQL Monitoring 設定設定檔時,您需要在打算使用的 Key Vault 資源上具備下列權限之一:
- Microsoft.Authorization/roleAssignments/write
- Microsoft.Authorization/roleAssignments/delete
如果您具備這些權限,系統會自動在建立 SQL Monitoring 設定檔 (使用您指定 Key Vault 的設定檔) 的同時,建立新的 Key Vault 存取原則。
重要事項
您必須確保網路和安全性設定允許監視 VM 存取 Key Vault。 如需詳細資訊,請參閱存取防火牆後方的 Azure Key Vault 和設定 Azure Key Vault 網路設定。
建立 SQL 監視設定檔
從 Azure 入口網站中 [Azure 監視器] 功能表的 [深入解析] 區段中,選取 [SQL (預覽版)],以開啟 SQL Insights (預覽版)。 選取 [建立新設定檔]。
設定檔會儲存您想要從 SQL 系統收集的資訊。 其具備特定設定,適用於:
- Azure SQL Database
- Azure SQL 受控執行個體
- Azure VM 上的 SQL Server
例如,您可能會建立一個名為 SQL Production 的設定檔,和另一個名為 SQL Staging 的設定檔,以設定不同的資料收集頻率、要收集的資料內容,以及傳送資料的目的地工作區。
設定檔會在您選取的訂閱和資源群組中儲存為資料收集規則資源。 每個設定檔都需要下列項目:
- Name: 建立之後便無法編輯。
- 位置。 這是 Azure 區域。
- 儲存監視資料的 Log Analytics 工作區。
- 收集 SQL Monitoring 資料的頻率和類型的收集設定。
注意
設定檔的位置應該與您打算傳送監視資料的目的地 Log Analytics 工作區位於相同的位置。
輸入監視設定檔的詳細資料後,選取 [建立監視設定檔]。 部署設定檔最多可能需要一分鐘的時間。 如果您沒有看到 [監視設定檔] 下拉式方塊中列出新的設定檔,請選取 [重新整理] 按鈕,新設定檔應該會在部署完成後顯示。 選取新的設定檔之後,請選取 [管理設定檔] 索引標籤,以新增與設定檔相關聯的監視機器。
新增監視機器
選取 [新增監視機器] 開啟 Add monitoring virtual machine
內容面板,選擇虛擬機器,以監視您的 SQL 執行個體,並提供連接字串。
選取監視虛擬機器的訂閱和名稱。 如果您使用金鑰保存庫來儲存監視登入的密碼 (強烈建議),請選取 Key vault subscriptions
下該金鑰保存庫的訂用帳戶,然後選取 KeyVault
下儲存祕密的金鑰保存庫。 在 Connection strings
欄位中,輸入要用於連接字串中每個密碼的保存庫 URI 和祕密名稱。
例如,如果金鑰保存庫 URI 為 https://mykeyvault.vault.azure.net/
,且祕密名稱為 sqlPassword1
和 sqlPassword2
,則 Connection strings
欄位中的 JSON 將包含下列內容:
{
"secrets": {
"telegrafPassword1": {
"keyvault": "https://mykeyvault.vault.azure.net/",
"name": "sqlPassword1"
},
"telegrafPassword2": {
"keyvault": "https://mykeyvault.vault.azure.net/",
"name": "sqlPassword2"
}
}
}
您現在可以在 Connection strings
欄位中進一步參考這些祕密。 在下列範例中,兩個連接字串會參考之前定義的 telegrafPassword1
或 telegrafPassword2
祕密:
{
"sqlAzureConnections": [
"Server=mysqlserver.database.windows.net;Port=1433;Database=mydatabase;User Id=telegraf;Password=$telegrafPassword1;"
],
"sqlVmConnections": [
"Server=mysqlserver1;Port=1433;Database=master;User Id=telegraf;Password=$telegrafPassword2;"
]
}
如需識別不同 SQL 部署的連接字串的詳細資料,請參閱下一節。
新增連接字串
連接字串會指定 SQL Insights (預覽版) 在登入 SQL 以收集監視資料時應使用的登入名稱。 如果您使用 Key Vault 來儲存監視使用者的密碼,請提供包含密碼的 Key Vault URI 和祕密名稱。
連接字串會視每種 SQL 資源類型而有所不同:
從監視機器到資料庫所使用的 IP 位址和連接埠的 TCP 連線,都必須受到可能存在於網路路徑上的任何防火牆或網路安全性群組 (NSG) 允許。 如需 IP 位址和連接埠的詳細資料,請參閱 Azure SQL Database 連線架構。
以下列格式輸入連接字串:
"sqlAzureConnections": [
"Server=mysqlserver1.database.windows.net;Port=1433;Database=mydatabase;User Id=$username;Password=$password;",
"Server=mysqlserver2.database.windows.net;Port=1433;Database=mydatabase;User Id=$username;Password=$password;"
]
從 [連接字串] 頁面取得詳細資料,以及資料庫的適當 ADO.NET 端點。
若要監視可讀取次要,請將 ;ApplicationIntent=ReadOnly
附加至連接字串。 SQL 深入解析支援監視單一次要。 收集的資料將會加上標記,以反映主要或次要。