你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

启用 SQL 见解(预览版)

适用于: 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 见解(预览版)来监视 SQL 部署。 通过连接到 SQL 部署的 Azure 虚拟机来进行监视,并且该虚拟机使用动态管理视图 (DMV) 来收集监视数据。 可以使用监视配置文件控制要收集的数据集和收集频率。

若要通过使用资源管理器模板创建监视配置文件和虚拟机来启用 SQL 见解(预览版),请参阅 SQL 见解(预览版)的资源管理器模板示例

创建 Log Analytics 工作区

SQL 见解将其数据存储在一个或多个 Log Analytics 工作区中。 在启用 SQL 见解前,需要创建一个工作区或选择一个现有工作区。 单个工作区可使用多个监视配置文件,但工作区和配置文件必须位于同一 Azure 区域。 若要启用并访问 SQL 见解中的功能,必须在工作区中拥有 Log Analytics 参与者角色

创建监视用户

需要在要监视的 SQL 部署中设置一个用户(登录名)。 针对不同类型的 SQL 部署,请按照以下过程进行操作。

下面的说明按照 SQL 类型介绍了你可以监视的过程。 若要使用此脚本一次对多个 SQL 资源完成此任务,请参阅以下自述文件示例脚本

注意

SQL 见解(预览版)不支持以下 Azure SQL 数据库方案:

  • 弹性池:无法收集弹性池的指标。 无法收集弹性池中数据库的指标。
  • 低服务层级:无法收集基本、S0 和 S1 服务目标数据库的指标

SQL 见解(预览版)对以下 Azure SQL 数据库方案的支持有限:

  • 无服务器层级:可以收集使用无服务器计算层级的数据库的指标。 但是,指标收集过程会重置自动暂停延迟计时器,导致数据库无法进入“已自动暂停”状态。

在 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 

“查询编辑器”的屏幕截图,其中包含创建 telegraf 用户脚本。

验证是否已创建用户。

“查询编辑器”查询窗口的屏幕截图,其中正在验证 telegraf 用户脚本。

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 Marketplace 映像。 有关详细信息,请参阅 Azure 中对 Linux 和开源技术的支持
  • 建议的最小 Azure 虚拟机大小:Standard_B2s(2 个 CPU、4 GiB 内存)
  • 部署在 Azure Monitor 代理支持的任何 Azure 区域,并满足所有 Azure Monitor 代理先决条件

注意

Standard_B2s(2 个 CPU、4 GiB 内存)虚拟机大小最多支持 100 个连接字符串。 一个虚拟机不得分配超过 100 个连接。

根据你的 SQL 资源的网络设置,可能需要将你的虚拟机放置在你的 SQL 资源所在的虚拟网络中,这样虚拟机便可以进行网络连接以收集监视数据。

配置网络设置

每种类型的 SQL 都会提供监视虚拟机安全访问 SQL 的方法。 以下各部分介绍基于 SQL 部署类型的各选项。

SQL 见解支持通过其公共终结点以及虚拟网络访问 Azure SQL 数据库。

要通过公共终结点访问,请在 Azure 门户的“防火墙设置”页面和 IP 防火墙设置部分下添加一条规则。 若要指定通过虚拟网络访问,可以设置虚拟网络防火墙规则,并设置 Azure Monitor 代理所需的服务标记

Azure 门户中“Azure SQL 数据库”页的屏幕截图。突出显示了“设置服务器防火墙”按钮。

Azure 门户中“Azure SQL 数据库防火墙设置”页的屏幕截图。防火墙设置。

在 Azure Key Vault 中存储监视密码

作为安全方面的最佳做法,我们强烈建议你将 SQL 用户(登录名)密码存储在 Key Vault 中,而不是将它们直接输入到监视配置文件连接字符串中。

设置用于 SQL 监视的配置文件时,需要对要使用的密钥保管库资源具有以下权限之一:

  • Microsoft.Authorization/roleAssignments/write
  • Microsoft.Authorization/roleAssignments/delete

如果你拥有这些权限,则在创建使用指定 Key Vault 的 SQL Monitoring 配置文件时,将自动创建一个新的 Key Vault 访问策略。

重要

你需要确保网络和安全配置允许监视 VM 访问 Key Vault。 有关详细信息,请参阅访问防火墙保护下的 Azure Key Vault配置 Azure Key Vault 网络设置

创建 SQL 监视配置文件

打开 SQL 见解(预览版):在 Azure 门户中“Azure Monitor”菜单的“见解”部分选择“SQL (预览版)”。 选择“新建配置文件”。

Azure 门户中 Azure Monitor 页的屏幕截图。突出显示了“创建新配置文件”按钮。

该配置文件将存储要从 SQL 系统收集的信息。 它对以下各项有特定设置:

  • Azure SQL 数据库
  • Azure SQL 托管实例
  • Azure VM 上的 SQL Server

例如,可以创建两个配置文件,一个名为“SQL 生产”,一个名为“SQL 暂存”,对于数据收集频率、要收集的数据以及数据发送到哪个工作区,它们有不同的设置 。

此配置文件作为数据收集规则资源存储在所选订阅和资源组中。 每个配置文件都需要以下各项:

  • 名称: 创建后不能编辑。
  • 位置。 指的是 Azure 区域。
  • 用于存储监视数据的 Log Analytics 工作区。
  • 关于要收集的 SQL 监视数据的频率和类型的集合设置。

注意

配置文件的位置应与计划向其发送监视数据的 Log Analytics 工作区位于同一位置。

Azure 门户中“创建新配置文件详细信息”页的屏幕截图。

输入监视配置文件的详细信息后,请选择“创建监视配置文件”。 部署配置文件最长可能需要一分钟时间。 如果未看到“监视配置文件”组合框中列出新的配置文件,请选择刷新按钮,配置文件应会在部署完成后立即显示。 选择新的配置文件后,选择“管理配置文件”选项卡,添加要与配置文件关联的监视计算机。

添加监视计算机

选择“添加监视计算机”,打开 Add monitoring virtual machine 上下文面板,选择要用于监视 SQL 实例的虚拟机,并提供连接字符串。

选择监视虚拟机的订阅和名称。 如果使用密钥保管库存储监视登录名的密码(强烈建议),请在 Key vault subscriptions 下选择该密钥保管库的订阅,然后在 KeyVault 下选择存储机密的密钥保管库。 在 Connection strings 字段中,输入保管库 URI 和连接字符串中使用的每个密码的机密名称。

例如,如果密钥保管库 URI 为 https://mykeyvault.vault.azure.net/,机密名称为 sqlPassword1sqlPassword2,则 Connection strings 字段中的 JSON 将包含以下内容:

{
   "secrets": {
      "telegrafPassword1": {
         "keyvault": "https://mykeyvault.vault.azure.net/",
         "name": "sqlPassword1"
      },
      "telegrafPassword2": {
         "keyvault": "https://mykeyvault.vault.azure.net/",
         "name": "sqlPassword2"
      }
   }
}

现在可以在 Connection strings 字段中进一步引用这些机密。 在以下示例中,两个连接字符串引用了前面定义的 telegrafPassword1telegrafPassword2 机密:

{
   "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;"
   ]
}

Azure 门户“添加监视虚拟机”页的屏幕截图。选择 VM,指定 KV URL(如果已使用)和机密名称。输入要监视的每个系统的连接字符串。选择创建机密(在连接字符串中使用)的所在 KV。

请查看下一节,详细了解如何确定用于不同 SQL 部署的连接字符串。

添加连接字符串

连接字符串指定 SQL 见解(预览版)在登录 SQL 收集监视数据时应使用的登录名。 如果要使用 Key Vault 来存储监视用户的密码,请提供 Key Vault URI 和包含密码的机密名称。

连接字符串根据 SQL 资源类型而异:

网络路径上可能存在的任何防火墙或网络安全组 (NSG) 必须允许从监视计算机到数据库使用的 IP 地址和端口的 TCP 连接。 有关 IP 地址和端口的详细信息,请参阅 Azure SQL 数据库连接体系结构

在窗体中输入连接字符串:

"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 见解支持监视单个辅助数据库。 收集的数据将被标记,以反映主数据库或辅助数据库。