你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
创建和配置数据库观察程序(预览版)
适用于:Azure SQL 数据库
Azure SQL 托管实例
本文包含在 Azure 门户中为 Azure SQL 数据库和 Azure SQL 托管实例创建、配置和启动数据库观察程序的详细步骤。
数据库观察程序不需要部署和维护任何监视代理或其他监视基础结构。 可以在几分钟内启用对 Azure SQL 资源的深度数据库监视。
有关创建和配置数据库观察程序的简化分步示例,请参阅快速入门:创建用于监视 Azure SQL 的数据库观察程序。
若要查看如何使用 Bicep 或 ARM 模板创建和配置数据库观察程序,请参阅创建数据库观察程序代码示例。
若要使用基础结构即代码(Bicep、ARM 模板、Terraform AzAPI)定义观察程序,请查看 Azure 资源参考文档。
若要以编程方式管理数据库观察程序,请参阅数据库观察程序 REST API 文档。
注意
数据库观察程序当前为预览版。
先决条件
若要使用数据库观察程序,需要满足以下先决条件。
你需要一个有效的 Azure 订阅。 如果没有帐户,请创建一个免费帐户。 你需要是订阅或资源组的“参与者”角色或“所有者”角色的成员才能创建资源。
若要配置和启动数据库观察程序,需要现有的 SQL 目标:Azure SQL 数据库、弹性池或 SQL 托管实例。
- 如果尚未创建 Azure SQL 数据库,请访问快速入门:创建单一数据库。 查找使用你的套餐免费试用 Azure SQL 数据库的选项。
- 或者,免费试用 Azure SQL 托管实例(预览版)。
必须在 Azure 订阅中注册
Microsoft.DatabaseWatcher
、Microsoft.Kusto
和Microsoft.Network
资源提供程序。- 若要使用 SQL 身份验证连接到 Azure SQL 资源,还必须注册
Microsoft.KeyVault
资源提供程序。 请参阅使用 SQL 身份验证的其他配置。
如果你在订阅级别有“所有者”或“参与者”RBAC 角色成员身份,则系统会自动注册资源提供程序。 否则,其中一个角色中的用户必须先注册资源提供程序,然后才能创建和配置观察程序。 有关详细信息,请参阅注册资源提供程序。
- 若要使用 SQL 身份验证连接到 Azure SQL 资源,还必须注册
创建和配置观察程序和 Azure 数据资源管理器群集资源的用户必须是创建这些资源的资源组或订阅的“所有者”或“参与者”RBAC 角色的成员。
此外,如果使用 SQL 身份验证,则用户必须是资源组的“所有者”角色的成员,或者是存储 SQL 身份验证凭据的密钥保管库的“所有者”或“用户访问权限管理员”角色的成员。
配置观察程序的用户必须具有对 Azure SQL 目标的管理员访问权限。 管理员授予观察程序对 SQL 监视目标的有限特定访问权限。 有关详细信息,请参阅授予对目标的访问权限。
若要授予观察程序对 SQL 目标的访问权限,管理员需要使用 SQL Server Management Studio (SSMS)、具有 SQL Server mssql 扩展或其他 SQL 客户端工具的 Visual Studio Code 执行 T-SQL 脚本。
若要将 Azure 专用链接用于与 Azure 资源的专用连接,批准专用终结点的用户必须是“所有者”RBAC 角色的成员,或者必须具有所需的 RBAC 权限。 有关详细信息,请参阅专用终结点的审批 RBAC。
创建观察程序
在 Azure 门户的导航菜单中,选择“所有服务”。 选择“监视”作为类别,然后在“监视工具”下选择“数据库观察程序”。 或者,可以在门户页面顶部的“搜索”框中键入“数据库观察程序”,然后选择“数据库观察程序”。
“数据库观察程序”视图打开后,选择“创建”。
在“基本信息”选项卡上,选择观察程序的订阅和资源组,输入观察程序的名称,然后选择 Azure 区域。
提示
在预览期间,如果你的区域尚未提供数据库观察程序,则可以在其他区域中创建它。 有关详细信息,请参阅区域可用性。
在“标识”选项卡上,默认情况下会启用观察程序的系统分配的托管标识。 如果希望观察程序改用用户分配的托管标识,请选择“添加”按钮,找到要使用的标识,然后选择“添加”按钮。 为了使用户分配的标识对观察程序有效,请禁用系统分配的托管标识。
有关数据库观察程序中的托管标识的详细信息,请参阅修改观察程序标识。
为观察程序选择数据存储。
默认情况下,创建观察程序还会创建 Azure 数据资源管理器群集,并将该群集上的数据库添加为收集的监视数据的数据存储。
默认情况下,新的 Azure 数据资源管理器群集使用“超小,计算优化”SKU。 这是仍提供服务级别协议 (SLA) 的最经济 SKU。 以后可以根据需要缩放此群集。
或者,可以在已有的 Azure 数据资源管理器群集、免费的 Azure 数据资源管理器群集或实时分析上使用数据库。
- 在“数据存储”选项卡上,选择“选择数据存储”选项,然后选择“添加”。
- 选择实时分析数据库或 Azure 数据资源管理器群集。
- 如果使用现有的 Azure 数据资源管理器群集,则必须启用流式引入。
- 创建新数据库或使用现有数据库。
注意
选择的任何现有数据库都必须为空,或者必须是以前用作数据库观察程序数据存储的数据库。 不支持选择包含非由数据库观察程序创建的任何对象的数据库。
或者,你可以在此时跳过添加数据存储,稍后再添加。 启动观察程序需要数据存储。
在“SQL 目标”选项卡上,添加一个或多个要监视的 Azure SQL 资源。 可以在创建观察程序时跳过添加 SQL 目标,并在以后添加它们。 在启动观察程序之前,至少需要添加一个目标。
在“查看 + 创建”选项卡上,查看观察程序配置,然后选择“创建”。 如果选择默认选项创建新的 Azure 数据资源管理器群集,部署通常需要 15-20 分钟。 如果在已有的 Azure 数据资源管理器群集、免费的 Azure 数据资源管理器群集或实时分析上选择数据库,部署通常最多需要五分钟。
部署完成后,向观察程序授予对 SQL 目标的访问权限。
可能还需要授予观察程序访问数据存储的权限。
- 对于对新的或现有 Azure 数据资源管理器群集,如果创建观察程序的用户是该群集的“所有者”RBAC 角色的成员,则会在创建该观察程序时自动授予对该群集中数据库的访问权限。
- 但是,如果选择以下数据库,则必须使用 KQL 命令授予对数据存储的访问权限:
- Microsoft Fabric 中的实时分析。
- 免费 Azure 数据资源管理器群集。
-
- 如果 SQL 目标、数据存储和密钥保管库上已启用公共访问,而你想要使用公共连接,请确保满足所有公共连接先决条件。
启动和停止观察程序
创建观察程序时,它不会自动启动,因为可能需要其他配置。
若要启动观察程序,其必须具有:
- 数据存储。
- 至少一个目标。
- 对数据存储和目标的访问权限。
- 如果为任何目标选择了 SQL 身份验证,则还需要对密钥保管库的访问权限。
- 与目标的专用或公共连接、密钥保管库(如果使用 SQL 身份验证)和数据存储。
- 如要使用专用连接,创建专用终结点。
完全配置观察程序后,在“概述”页上使用“开始”按钮启动数据收集。 几分钟后,新的监视数据会显示在数据存储和仪表板中。 如果在五分钟内未看到新数据,请参阅故障排除。
如果一段时间内不需要监视 Azure SQL 资源,可以使用“停止”按钮停止观察程序。
若要重启观察程序,请停止它,然后再次启动。
修改观察程序
在 Azure 门户中,可以添加或移除目标、创建或删除专用终结点、对现有观察程序使用另一数据存储,或修改观察程序的托管标识。
注意
除非另有说明,否则在停止并重启观察程序后,对观察程序配置所做的更改将生效。
添加 SQL 目标到观察程序
若要为 Azure SQL 数据库、弹性池或 SQL 托管实例启用数据库观察程序监视,需要将此资源添加为 SQL 目标。
- 若要添加目标,请在“SQL 目标”页上选择“添加”。
- 查找要监视的 Azure SQL 资源。 选择资源类型和订阅,然后从资源列表中选择 SQL 目标。 与观察程序类似,SQL 目标也可以位于同一 Microsoft Entra ID 租户里的任意订阅中。
- 若要监视数据库、弹性池或 SQL 托管实例的主副本和高可用性辅助副本,请为同一资源添加两个单独的 SQL 目标,然后勾选其中一个目标的“读取意向”框。 类似地,为异地副本及其高可用性辅助副本(如果有)创建两个单独的 SQL 目标。
连接到 SQL 目标时,数据库观察程序默认情况下使用 Microsoft Entra 身份验证。 如果希望观察程序使用 SQL 身份验证,选中“使用 SQL 身份验证”框并输入所需的详细信息。 有关详细信息,请参阅使用 SQL 身份验证的其他配置。
从观察程序中删除 SQL 目标
若要删除一个或多个目标,请打开“SQL 目标”页,选择要在列表中删除的目标,然后选择“删除”。
重新启动观察程序后,删除目标将停止监视 Azure SQL 资源,但不会删除实际资源。
如果删除由数据库观察程序监视的 Azure SQL 资源,还应删除相应的目标。 由于观察程序可以拥有的 SQL 目标数有限制,因此保留过时的目标可能会阻止添加新目标。
创建托管专用终结点
如果要使用专用连接从 SQL 目标收集数据、引入数据存储以及连接到密钥保管库,则必须创建托管专用终结点。 如果未创建专用终结点,数据库观察程序默认使用公共连接。
注意
数据库观察程序需要自己的托管专用终结点才能连接到 Azure 资源。 观察程序不能对 Azure SQL 逻辑服务器、SQL 托管实例、Azure 数据资源管理器群集或密钥保管库使用可能已存在的任何专用终结点。
若要为观察程序创建托管专用终结点:
如果在为其创建了托管专用终结点的资源、资源组或资源订阅上存在只读锁,请移除该锁。 成功创建专用终结点后,可以再次添加只读锁。
导航到 Azure 门户中的数据库观察程序,打开“托管专用终结点”页,然后选择“添加”。
输入专用终结点的名称。
选择要为其创建专用终结点的 Azure 资源的订阅。
根据要为其创建专用终结点的资源类型,选择“资源类型”和“目标子资源”,如下所示:
资源 资源类型 目标子资源 逻辑服务器 Microsoft.Sql/servers
sqlServer
SQL 托管实例 Microsoft.Sql/managedInstances
managedInstance
Azure 数据资源管理器群集 Microsoft.Kusto/clusters
cluster
密钥保管库 Microsoft.KeyVault/vaults
vault
选择要为其创建专用终结点的资源。 它可以是 Azure SQL 逻辑服务器、SQL 托管实例、Azure 数据资源管理器群集或密钥保管库。
- 为 Azure SQL 数据库逻辑服务器创建专用终结点可为该服务器上的所有数据库和弹性池目标启用数据库观察程序专用连接。
(可选)输入专用终结点的说明。 这有助于资源所有者批准请求。
选择创建。 创建专用终结点可能需要几分钟时间。 一旦专用终结点的预配状态从“已接受”或“正在运行”变更为“成功”,即完成专用终结点创建。 刷新视图以查看当前预配状态。
重要
专用终结点以“挂起”状态创建。 资源所有者必须先批准专用终结点,然后数据库观察程序才能使用它连接到资源。
若要让资源所有者控制网络连接,数据库观察程序专用终结点不会自动获得批准。
资源所有者必须批准专用终结点请求。
- 在 Azure 门户中,资源所有者可搜索“专用链接”以打开“专用链接中心”。 在“挂起连接”下,找到创建的专用终结点,确认其说明和详细信息,然后选择“批准”。
- 还可以使用 Azure CLI 批准专用终结点请求。
如果观察程序已在批准专用终结点时运行,则必须将其重新启动才能开始使用专用连接。
提示
如果群集公共连接被禁用,则需要为 Azure 数据资源管理器群集创建额外的专用终结点。 有关详细信息,请参阅到数据存储的私有连接。
删除托管专用终结点
- 如果在为其删除了托管专用终结点的资源、资源组或资源订阅上存在删除或只读锁,请移除该锁。 成功删除专用终结点后,可以再次添加删除锁。
- 在数据库观察程序的 Azure 门户页中,打开“托管专用终结点”页。
- 选择要删除的专用终结点。
- 选择“删除”。
删除托管专用终结点会停止从使用此专用终结点的 SQL 目标收集数据。 删除 Azure 数据资源管理器群集的托管专用终结点会停止所有目标的数据收集。 若要恢复数据收集,请重新创建专用终结点或启用公共连接,然后重启观察程序。
更改观察程序的数据存储
观察程序只能有一个数据存储。
若要更改当前数据存储,请删除现有数据存储,然后添加新的数据存储。
若要删除当前数据存储,请打开“数据存储”页,选择网格中的数据存储,然后选择“删除”。
- 删除数据存储不会删除 Azure 数据资源管理器群集或 Microsoft Fabric 中实时分析上的实际数据存储数据库。
- 若要停止将数据收集到已删除的数据存储中,请停止观察程序。
- 如果删除数据存储,必须先添加新的数据存储,然后才能再次启动观察程序。
若要添加数据存储,请在“数据存储”页上选择“添加”,然后在 Azure 数据资源管理器群集或实时分析中选择或创建数据库。
- 选择的数据库必须为空,或者必须是以前用作数据库观察程序数据存储的数据库。 不支持选择包含非由数据库观察程序创建的任何对象的数据库。
- 添加数据存储后,必须授予观察程序访问权限才能使用它。 有关详细信息,请参阅授予对数据存储的访问权限。
- 重新启动观察程序后,将使用新的数据存储。
提示
如果将数据存储从付费 Azure 数据资源管理器群集切换到免费 Azure 数据资源管理器群集,请考虑在不再需要付费群集时停止或删除它。 这可以避免不必要的成本。
修改观察程序标识
观察程序必须具有托管标识才能向 SQL 目标、密钥保管库和数据存储进行身份验证。 可以使用系统分配的或用户分配的托管标识。 有关 Azure 中的托管标识的详细信息,请参阅什么是 Azure 资源托管标识?
以下注意事项有助于选择观察程序的托管标识的类型:
系统分配
用户分配
- 只有在为观察程序禁用系统分配的标识时才有效。
- 可以将同一个用户分配的标识分配给多个观察程序以简化访问管理,例如在监视大型 Azure SQL 资产时这样做。 可以将访问权限授予单个用户分配的标识,而不是授予多个观察程序的系统分配的标识。
- 为了支持职责分离,标识管理可以与观察程序管理分开。 用户分配的标识可以在创建观察程序之前或之后创建,并由另一用户授予访问权限。
- 相反,当删除观察程序时,用户分配的标识及其访问权限保持不变。 然后可以将同一标识用于新的观察程序。
- 不支持为观察程序指定多个用户分配的标识。
若要修改观察程序的托管标识,请打开观察程序的“标识”页。
若要使用系统分配的标识,请启用“系统分配的标识”切换。
若要使用用户分配的标识,请禁用“系统分配的标识”切换。 选择“添加”按钮以查找和添加现有的用户分配的标识。
若要创建新的用户分配的标识,请参阅创建用户分配的托管标识。
若要从观察程序中移除用户分配的标识,请在列表中选择该标识,然后选择“移除”。 移除用户分配的标识后,需要添加另一用户分配的标识,或启用系统分配的标识。
已移除的用户分配的标识不会从 Microsoft Entra ID 租户中删除。
选择“保存”按钮以保存标识更改。 如果该操作会导致观察程序没有标识,则无法保存标识更改。 不支持没有有效托管标识的观察程序。
提示
我们建议你确保观察程序托管标识的显示名称在 Microsoft Entra ID 租户内独一无二。 为观察程序创建用户分配的标识时,可以选择一个独一无二的名称。
系统分配的标识的显示名称与观察程序名称相同。 如果使用系统分配的标识,请确保观察程序名称在 Microsoft Entra ID 租户中独一无二。
如果托管标识显示名称不是独一无二的,则授予观察程序对 SQL 目标的访问权限的 T-SQL 脚本会失败,并出现显示名称重复错误。 有关详细信息和解决方法,请参阅显示名称不独一无二的 Microsoft Entra 登录名和用户。
保存标识更改后不久,观察程序就会使用其当前的托管标识重新连接到 SQL 目标、密钥保管库(如果使用)和数据存储。
删除观察程序
如果观察程序、其资源组或其订阅上有删除或只读锁,请移除该锁。 同样,如果资源、资源组或资源的订阅上有一个锁,并且你为它们创建了一个托管专用终结点,请删除该锁。 成功删除监视器后,可以再次添加锁。
删除启用了系统分配的托管标识的观察程序时,也会删除该标识。 这会删除你授予此标识的任何访问权限。 如果稍后重新创建观察程序,则需要授予对新观察程序的系统分配的托管标识的访问权限,以便向每个资源进行身份验证。 这包括:
即使使用相同的观察程序名称,也必须对重新创建的观察程序授予访问权限。
删除观察程序时,不会删除作为其 SQL 目标引用的 Azure 资源以及数据存储。 收集的 SQL 监视数据保留在数据存储中,如果以后创建新的观察程序,则可以使用与数据存储相同的 Azure 数据资源管理器或实时分析数据库。
授予对 SQL 目标的访问权限
若要允许观察程序收集 SQL 监视数据,需要执行 T-SQL 脚本,以授予观察程序特定的受限 SQL 权限。
若要在 Azure SQL 数据库中执行脚本,需要服务器管理员访问包含要监视的数据库和弹性池的逻辑服务器。
- 在 Azure SQL 数据库中,每个逻辑服务器只需为每个创建的观察程序执行一次脚本。 这会授予观察程序对该服务器上的所有现有和新数据库以及弹性池的访问权限。
若要在 Azure SQL 托管实例中执行脚本,你需要是
sysadmin
或securityadmin
服务器角色的成员,或者对 SQL 托管实例具有CONTROL SERVER
权限。- 在 Azure SQL 托管实例中,需要在要监视的每个实例上执行脚本。
导航到 Azure 门户中的观察程序,选择“SQL 目标”,选择其中一个“授予访问权限”链接以打开 T-SQL 脚本,并复制脚本。 请确保为要使用的目标类型和身份验证类型选择正确的链接。
重要
Azure 门户中的 Microsoft Entra 身份验证脚本特定于观察程序,因为它包含观察程序的托管标识的名称。 有关可为每个观察程序自定义的此脚本的通用版本,请参阅使用 T-SQL 脚本授予对 SQL 目标的访问权限。
在 SQL Server Management Studio 或任何其他 SQL 客户端工具中,打开一个新的查询窗口,并将其连接到包含目标的 Azure SQL 逻辑服务器上的
master
数据库,或连接到 SQL 托管实例目标上的master
数据库。粘贴并执行 T-SQL 脚本,以授予观察程序访问权限。 该脚本会创建观察程序用于连接的登录名,并授予收集监视数据的特定有限权限。
- 如果你使用 Microsoft Entra 身份验证脚本,而观察程序使用系统分配的托管标识,则你在执行脚本时该观察程序必须已创建好。 如果观察程序将使用用户分配的托管标识,则你可以在观察程序创建之前或之后执行该脚本。
执行授予托管标识访问权限的 T-SQL 访问脚本时,你必须通过 Microsoft Entra 身份验证进行连接。
如果稍后向观察程序添加新目标,则需要以类似的方式授予对这些目标的访问权限,除非这些目标位于已授予访问权限的逻辑服务器上。
使用 T-SQL 脚本授予对 SQL 目标的访问权限
Microsoft Entra 身份验证与 SQL 身份验证,以及 Azure SQL 数据库与 Azure SQL 托管实例目标有不同的脚本。
重要
始终使用提供的脚本授予对数据库观察程序的访问权限。 以其他方式授予访问权限会阻止数据收集。 有关详细信息,请参阅观察程序授权。
在执行脚本之前,请将脚本中可能存在的所有占位符实例(如 login-name-placeholder
和 password-placeholder
)替换为实际值。
对 Microsoft Entra 经过身份验证的观察程序授予访问权限
此脚本在 Azure SQL 数据库的逻辑服务器上创建 Microsoft Entra(以前称为 Azure Active Directory)身份验证登录名。 为观察程序的托管标识创建登录名。 该脚本授予观察程序从逻辑服务器上的所有数据库和弹性池收集监视数据的必要和充足权限。
如果观察程序使用系统分配的托管标识,你必须使用观察程序名称作为登录名。 如果观察程序使用用户分配的托管标识,你必须使用该标识的显示名称作为登录名。
脚本必须在逻辑服务器上的 master
数据库中执行。 必须使用服务器管理员的 Microsoft Entra 身份验证登录名登录。
CREATE LOGIN [identity-name-placeholder] FROM EXTERNAL PROVIDER;
ALTER SERVER ROLE ##MS_ServerPerformanceStateReader## ADD MEMBER [identity-name-placeholder];
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [identity-name-placeholder];
ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [identity-name-placeholder];
对 SQL 经过身份验证的观察程序授予访问权限
使用 SQL 身份验证时需要执行其他步骤,请参阅使用 SQL 身份验证的其他配置。
此脚本在 Azure SQL 数据库中的逻辑服务器上创建 SQL 身份验证登录名。 它授予登录名从逻辑服务器上的所有数据库和弹性池收集监视数据的必要和充足权限。
必须使用逻辑服务器管理员登录名在逻辑服务器上的 master
数据库中执行该脚本。
CREATE LOGIN [login-name-placeholder] WITH PASSWORD = 'password-placeholder';
ALTER SERVER ROLE ##MS_ServerPerformanceStateReader## ADD MEMBER [login-name-placeholder];
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [login-name-placeholder];
ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [login-name-placeholder];
使用 SQL 身份验证的其他配置
若要安全地存储身份验证凭据,在数据库观察程序中使用 SQL 身份验证需要额外的配置。
提示
为获得更安全、更简单且不容易出错的配置,我们建议为 Azure SQL 资源启用 Microsoft Entra 身份验证,并使用它而不是 SQL 身份验证。
若要配置数据库观察程序以使用 SQL 身份验证连接到目标,请执行以下步骤:
在 Azure Key Vault 中创建保管库,或标识可以使用的现有保管库。 保管库必须使用 RBAC 权限模型。 RBAC 权限模型是新保管库的默认权限模型。 如果要使用现有保管库,请确保其未配置为使用较旧的访问策略模型。
如果要使用与保管库的专用连接,请在“托管专用终结点”页上创建专用终结点。 选择
Microsoft.KeyVault/vaults
作为“资源类型”,vault
作为“目标子资源”。 确保在启动观察程序之前专用终结点已批准。如果要使用公共连接,保管库必须允许所有网络的公共访问权限。 数据库观察程序不支持限制与特定网络的公共保管库连接。
在要监视的每个 Azure SQL 逻辑服务器或托管实例上创建一个 SQL 身份验证登录名,并使用提供的访问脚本授予特定且有限的权限。 在脚本中,将登录名和密码占位符替换为实际值。 请使用强密码。
在保管库中,创建两个机密:登录名一个机密,密码一个单独的机密。 使用任何有效的名称作为“机密名称”,并输入在 T-SQL 脚本中使用的登录名和密码作为每个机密的“机密值”。
例如,两个机密的名称可能是
database-watcher-login-name
和database-watcher-password
。 机密值是登录名和强密码。若要创建机密,需要是“密钥保管库机密管理人员”RBAC 角色的成员。
向观察程序添加 SQL 目标。 添加目标时,选中“使用 SQL 身份验证”框,然后选择存储登录名和密码机密的保管库。 在相应的字段中输入登录名和密码的机密名称。
添加 SQL 目标时,“不要”输入实际的登录名和密码。 使用前面的示例,可以输入
database-watcher-login-name
和database-watcher-password
机密名称。在 Azure 门户中添加 SQL 目标时,如果当前用户是密钥保管库的“所有者”角色或“用户访问管理员”角色的成员,则观察程序的托管标识会被自动授予对密钥保管库机密的必需访问权限。 否则,请按照下一步手动授予必需的访问权限。
从每个机密的“访问控制 (IAM)”页中,为“密钥保管库机密用户”RBAC 角色中观察程序的托管标识添加角色分配。 为了遵循最低特权原则,请为每个机密添加此角色分配,而不是为整个保管库添加此角色分配。 只有保管库配置为使用 RBAC 权限模型时,才会显示“访问控制 (IAM)”页面。
如果要在不同的 SQL 目标上使用不同的 SQL 身份验证凭证,需要创建多对机密。 可以使用同一保管库或不同的保管库来存储每个 SQL 目标的机密。
注意
如果在监视程序运行时更新密钥保管库中登录名或密码的机密值,则观察程序将在 15 分钟内使用新的 SQL 身份验证凭据重新连接到目标。 如果要立即开始使用新凭据,请停止并重启观察程序。
授予对数据存储的访问权限
要在数据存储中创建和管理数据库架构以及引入监视数据,数据库观察程序需要具有 Azure 数据资源管理器群集或实时分析群集中数据存储数据库的“管理员”RBAC 角色成员身份。 数据库观察程序不需要对 Azure 数据资源管理器群集有任何群集级访问权限,也不需要对同一群集上可能存在的其他数据库的任何访问权限。
如果你使用 Azure 数据资源管理器群集上的数据库作为数据存储,且你是该群集的“所有者”RBAC 角色的成员,则你会被自动授予此访问权限。 否则,必须按照本部分所述授予访问权限。
如果在实时分析中或免费的 Azure 数据资源管理器群集上使用数据库,则需使用 KQL 授予访问权限。
使用 Azure 门户授予对 Azure 数据资源管理器数据库的访问权限
可以使用 Azure 门户授予对 Azure 数据资源管理器群集上的数据库的访问权限:
- 对于 Azure 数据资源管理器群集上的“数据库”,请在“安全性 + 网络”下的资源菜单中,选择“权限”。 请勿使用群集的“权限”页。
- 选择“添加”,然后选择“管理员”。
- 在“新建主体”页上选择“企业应用程序”。 如果观察程序使用系统分配的托管标识,则请在“搜索”框中键入观察程序的名称。 如果观察程序使用用户分配的托管标识,则请在“搜索”框中键入该标识的显示名称。
- 选择观察程序的托管标识的企业应用程序。
使用 KQL 授予对 Azure 数据资源管理器数据库的访问权限
还可以使用 KQL 命令,而非使用 Azure 门户,来授予对数据库的访问权限。 使用此方法在实时分析或免费的 Azure 数据资源管理器群集上授予对数据库的访问权限。
使用 Kusto Explorer 或 Azure 数据资源管理器 web UI 连接到 Azure 数据资源管理器群集上的数据库。
按照下表中的说明,替换以下示例 KQL 命令中的三个占位符:
.add database [adx-database-name-placeholder] admins ('aadapp=identity-principal-id-placeholder;tenant-primary-domain-placeholder');
占位符 替代功能 adx-database-name-placeholder
Azure 数据资源管理器群集或实时分析上的数据库的名称。 identity-principal-id-placeholder
托管标识 (GUID) 的“主体 ID”值,可以在观察程序的“标识”页上找到。 如果启用了系统分配的标识,请使用其“主体 ID”值。 否则,请使用用户分配的标识的“主体 ID”值。 tenant-primary-domain-placeholder
观察程序托管标识的 Microsoft Entra ID 租户的域名。 此项位于 Azure 门户中 Microsoft Entra ID“概述”页面上。 也可以使用租户 ID GUID 值,而不是租户主域。
如果在实时分析或免费的 Azure 数据资源管理器群集上使用数据库,则需要此命令的此部分。
对于 Azure 数据资源管理器群集上的数据库,可以省略域名或租户 ID 值(以及前面的分号),因为该群集始终与观察程序的托管标识位于同一 Microsoft Entra ID 租户中。例如:
.add database [watcher_data_store] admins ('aadapp=9da7bf9d-3098-46b4-bd9d-3b772c274931;contoso.com');
有关详细信息,请参阅 Kusto 基于角色的访问控制。
向用户和组授予数据存储的访问权限
可以使用 Azure 门户或 KQL 命令授予用户和组对 Azure 数据资源管理器群集上或实时分析中的数据库的访问权限。 若要授予访问权限,用户必须是数据库中管理员 RBAC 角色的成员。
使用 KQL 命令授予对免费的 Azure 数据资源管理器群集中或实时分析中数据库的访问权限。 为遵循最低特权原则,建议不要将用户和组添加到“查看者”以外的任何 RBAC 角色。
重要
在授予查看数据库观察程序收集的 SQL 监视数据的权限时,请仔细考虑数据隐私和安全要求。
尽管数据库观察程序无法收集存储在 SQL 数据库中用户表内的任何数据,但某些数据集(如“活动会话”、“索引元数据”、“缺失索引”、“查询运行时统计信息”、“查询等待统计信息”、“会话统计信息”和“表元数据”)可能包含潜在的敏感数据,例如表和索引名称、查询文本、查询参数值、登录名等。
通过向无权在 SQL 数据库中查看此数据的用户授予对数据存储的访问权限,可以让他们查看他们本无法查看的敏感数据。
使用 Azure 门户授予对数据存储的访问权限
可以使用 Azure 门户授予用户和组对 Azure 数据资源管理器群集上的数据库的访问权限:
- 对于 Azure 数据资源管理器群集中的“数据库”,请在“安全性 + 网络”下的资源菜单中,选择“权限”。 请勿使用群集的“权限”页。
- 选择“添加”,然后选择“查看者”。
- 在“新主体”页上,在“搜索”框中键入用户或组的名称。
- 选择用户或组。
使用 KQL 授予对数据存储的访问权限
还可以使用 KQL 命令,而非使用 Azure 门户,来授予用户和组对数据库的访问权限。 以下示例 KQL 命令授予对具有特定租户 ID 值的 Microsoft Entra ID 租户中 mary@contoso.com 用户以及 SQLMonitoringUsers@contoso.com 组的数据读取访问权限:
.add database [watcher_data_store] viewers ('aaduser=mary@contoso.com');
.add database [watcher_data_store] viewers ('aadgroup=SQLMonitoringUsers@contoso.com;8537e70e-7fb8-43d3-aac5-8b30fb3dcc4c');
有关详细信息,请参阅 Kusto 基于角色的访问控制。
若要向另一租户中的用户和组授予对数据存储的访问权限,需要在 Azure 数据资源管理器群集上启用跨租户身份验证。 有关详细信息,请参阅允许跨租户查询和命令。
提示
若要允许向 Microsoft Entra ID 租户中的用户和组授予访问权限,可在实时分析中和免费的 Azure 数据资源管理器群集上启用跨租户身份验证。
管理数据存储
本部分介绍如何管理监视数据存储,包括缩放、数据保留和其他配置。 如果使用 Azure 数据资源管理器群集上的数据库,则本部分中的群集缩放注意事项可提供帮助。 如果使用 Fabric 中实时分析中的数据库,则会自动管理缩放。
缩放 Azure 数据资源管理器群集
可以根据需要缩放 Azure 数据资源管理器群集。 例如,如果不需要服务级别协议 (SLA),且查询和数据引入性能仍可接受,则可以将群集纵向缩减到“超小,开发/测试”SKU。
对于许多数据库观察程序部署,默认的“超小,计算优化” 2 实例群集 SKU 将无限期地足够。 在某些情况下,根据配置和工作负荷随时间的变化,可能需要缩放群集,以确保具有足够的查询性能并保持较低的数据引入延迟。
Azure 数据资源管理器支持垂直和水平群集缩放。 通过垂直缩放,可以更改群集 SKU,这会更改每个实例(节点)的 vCPU、内存和缓存数量。 使用水平缩放时,SKU 保持不变,但群集中的实例数会增加或减少。
如果注意到以下一个或多个症状,则需要横向(水平)或纵向(垂直)扩展群集:
- 仪表板或即席查询性能变得太慢。
- 在集群上运行了许多并发查询,并观察到了节流错误。
- 数据引入延迟一直高于可接受的范围。
一般情况下,数据存储中的数据量随时间推移而增加时,无需缩放群集。 这是因为仪表板查询和最常见的分析查询仅使用最新的数据,这些数据缓存在群集节点上的本地 SSD 存储中。
但是,如果运行时间范围跨越较长的分析查询,随着收集的数据总量增加且不再适合本地 SSD 存储,它们可能会随着时间推移而变慢。 在此种情况下,可能需要缩放群集来保持足够的查询性能。
如果需要缩放群集,建议先“水平”缩放群集以增加实例数。 这样可以在缩放过程中保持集群对查询和数据引入的可用性。
- 可以启用优化的自动缩放,以自动减少或增加实例数,以响应工作负荷变化或季节性趋势。
你可能会发现,即使在横向扩展群集之后,某些查询仍无法按预期执行。 如果查询性能受到群集实例(节点)上可用资源的限制,可能会发生这种情况。 在这种情况下,需要“纵向”扩展群集。
- 纵向群集缩放需要几分钟时间。 在该过程中,会有一段停机时间,观察程序可能会在此期间停止数据收集。 如果发生这种情况,请在缩放操作完成后停止并重启观察程序。
免费 Azure 数据资源管理器群集
免费 Azure 数据资源管理器群集有一定的容量限制,包括对原始的未压缩数据的存储容量限制。 无法缩放免费 Azure 数据资源管理器群集来增加其计算或存储容量。 当群集即将达到或已达到其存储容量上限时,“免费群集”页上会出现一条警告消息。
如果达到存储容量上限,则不会引入新的监视数据,但现有数据仍可在数据库观察程序仪表板上访问,并且可以使用 KQL 或 SQL 查询进行分析。
如果发现免费群集的规范不足以满足要求,可以升级到完整的 Azure 数据资源管理器群集。 升级会保留所有收集的数据。
要确保观察程序在升级后继续工作,必须按照以下步骤操作:
- 停止观察程序。
- 按照步骤 将系统升级为完整的 Azure 数据管理器集群,并等待升级完成。
- 更改观察程序的数据存储,选择已升级的 Azure 数据资源管理器群集和数据库。
- 启动观察程序。
若要继续使用免费 Azure 数据资源管理器群集,请管理数据保留以自动删除旧数据并释放空间以存储新数据。 一旦有可用的存储空间,则可能需要停止并重启观察程序以恢复数据收集。
管理数据保留
如果不需要较旧的数据,则可以配置数据保留策略来自动清除。 默认情况下,在 Azure 数据资源管理器群集或实时分析的新数据库中,数据保留期设置为 365 天。
- 可以在数据库级别缩短数据保留期,也可以减少数据库中的各个表的数据保留期。
- 如果需要存储监视数据超过一年,还可以增加保留期。 数据保留期没有上限。
- 如果为不同的表配置不同的数据保留期,仪表板可能无法按预期针对较旧的时间范围工作。 如果某些表中仍存在数据,但已在同一时间间隔的其他表中清除数据,则可能会发生这种情况。
数据存储中引入的 SQL 监视数据量取决于你的 SQL 工作负载和 Azure SQL 资产的大小。 可以使用以下 KQL 查询来查看每天引入的平均数据量、估算一段时间内的存储消耗量并管理数据保留策略。
.show database extents
| summarize OriginalSize = sum(OriginalSize),
CompressedSize = sum(CompressedSize)
by bin(MinCreatedOn, 1d)
| summarize DailyAverageOriginal = format_bytes(avg(OriginalSize)),
DailyAverageCompressed = format_bytes(avg(CompressedSize));
数据库观察程序数据存储中的架构和访问权限更改
随着时间的推移,Microsoft 可能会引入新的数据库观察程序数据集,或扩展现有数据集。 这意味着数据存储中的新表或现有表中的新列可能会自动添加。
为此,数据库观察程序的当前托管标识必须是数据存储中“管理员”RBAC 角色的成员。 撤消此角色成员身份,或将其替换为任何其他 RBAC 角色的成员身份,可能会影响数据库观察程序数据收集和架构管理,并且不受支持。
同样,不支持在数据库观察程序数据存储中创建任何新对象,例如表、外部表、具体化视图、函数等。 可以使用跨群集和跨数据库查询从其他 Azure 数据资源管理器群集或同一群集上的其他数据库查询数据存储中的数据。
重要
如果更改数据库观察程序对其数据存储的访问权限,或者进行任何影响数据引入的数据库架构或配置更改,则可能需要将该观察程序的数据存储更改为新的空数据库,并授予观察程序对此新数据库的访问权限,以恢复数据收集并还原受支持的配置。
已停止的 Azure 数据资源管理器群集
例如,可以停止 Azure 数据资源管理器群集以节省成本。 默认情况下,在 Azure 门户中创建的 Azure 数据资源管理器群集在处于非活动状态几天后自动停止。 例如,如果将数据引入群集上唯一数据库的观察程序停止,并且不在此数据库中运行任何查询,则可能会发生这种情况。
如果在创建新的观察程序时使用默认选项创建新的 Azure 数据资源管理器群集,则会禁用自动停止行为以允许不间断的数据收集。
如果群集已停止,则数据库观察程序数据收集也会停止。 若要恢复数据收集,需要启动群集。 群集运行后,重启观察程序。
如果希望群集即使在非活动状态时依然保持可用状态,也可以禁用自动停止行为。 这可能会增加群集成本。
流式引入
数据库观察程序要求包含数据存储数据库的 Azure 数据资源管理器群集已启用流式引入。 为创建新的观察程序时创建的新 Azure 数据资源管理器群集自动启用流式引入。 它还在实时分析中和免费的 Azure 数据资源管理器群集上启用。
如果要使用现有的 Azure 数据资源管理器群集,请确保首先启用流式引入。 这需要几分钟时间,并且会重启群集。
与数据存储的专用连接
如果禁用了 Azure 数据资源管理器群集上的公共访问,则需要创建专用终结点,以便从浏览器连接到群集,并查看仪表板上的 SQL 监视数据,或直接查询数据。 除了创建的托管专用终结点之外,此专用终结点还允许观察程序将监视数据引入 Azure 数据资源管理器群集上的数据库。
如果要从 Azure VM 连接到 Azure 数据资源管理器群集,请在部署 Azure VM 的 Azure 虚拟网络中为 Azure 数据资源管理器群集创建专用终结点。
如果要从本地计算机连接到 Azure 数据资源管理器群集,则可以:
- 使用 Azure VPN 网关或 Azure ExpressRoute 从你的内部部署网络建立到 Azure 虚拟网络的连接。
- 在 VPN 或 ExpressRoute 连接终结的 Azure 虚拟网络或者流量从计算机本地可到达的另一个 Azure 虚拟网络中,为 Azure 数据资源管理器群集创建一个专用终结点。
- 为专用终结点配置 DNS。
专用连接不适用于免费的 Azure 数据资源管理器群集,也不可用于 Microsoft Fabric 中的实时分析。
监视大型资产
若要监视大型 Azure SQL 资产,可能需要创建多个观察程序。
每个观察程序都需要 Azure 数据资源管理器群集或实时分析上的数据库作为数据存储。 创建的观察程序可以使用单一数据库作为通用数据存储,也可以将数据库分隔为单独的数据存储。 以下注意事项可帮助你为监视应用场景和要求做出最佳设计选择。
“常见数据存储”的注意事项:
- 整个 Azure SQL 资产都有单一管理视图。
- 任何观察程序的仪表板都显示数据存储中的所有数据,即使其他观察程序收集数据也是如此。
- 有权访问数据存储的用户有权访问整个 Azure SQL 资产的监视数据。
“独立数据存储”的注意事项:
- 独立监视 Azure SQL 资产的子集。 Azure 门户中的数据库观察程序仪表板始终显示单个数据存储中的数据。
- 有权访问多个数据存储的用户可以使用跨群集或跨数据库 KQL 查询,通过单个查询访问多个数据存储中的监视数据。
- 由于 Azure 数据资源管理器和实时分析中的数据访问按数据库进行管理,因此你可以以精细的方式管理对资产子集的监视数据的访问。
- 可以将多个数据库放置在同一 Azure 数据资源管理器群集上,以共享群集资源并节省成本,同时仍将数据隔离在每个数据库中。
- 如果需要完全分隔环境(包括对 Azure 数据资源管理器群集的网络访问),可以将不同的数据库放置在不同的群集上。