【问题标题】:Azure SQL Server Monitoring/Alerting for Multiple Databases (v12)多个数据库的 Azure SQL Server 监视/警报 (v12)
【发布时间】:2018-05-31 22:18:14
【问题描述】:

监控某个指标并针对多个数据库发出警报的最佳方法是什么。例如,如果数据库大小超过 10 GB,我想触发警报。

我知道您可以选择一个数据库并在 Azure Monitor 中进行配置,但是当有数百个数据库时,这似乎不可行。

我的数据库是使用 Azure 资源管理

创建的

【问题讨论】:

标签: azure azure-sql-database azure-sql-server azure-monitoring


【解决方案1】:

我认为 PowerShell,特别是 Get-AzureSqlDatabaseUsages 命令,是你最好的朋友。我过去曾将其作为修改后的“心跳”来完成。为此,我们还分析了索引碎片,并在需要时触发了REBUILD

上面的 PowerShell 命令示例:

C:\> Get-AzureSqlDatabaseUsages -ServerName "Server01" -DatabaseName "Database01"

这将要求您进行身份验证,但这本身也很简单。

您可以按计划执行脚本(即作为 WebJob 或计划任务)并根据某些指标阈值进行报告/通知。

编辑:对于 v12 数据库,使用以下查询(可以使用 PowerShell 和 sqlcmd.exe 以编程方式执行)

SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) AS DatabaseSizeInBytes,
       SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) / 1024 / 1024 AS DatabaseSizeInMB,
       SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) / 1024 / 1024 / 1024 AS DatabaseSizeInGB
FROM sys.database_files
WHERE type_desc = 'ROWS';

【讨论】:

  • 感谢您的回复 Pim,但该 powershell 命令仅适用于在经典门户中创建的资源。我的 SQL 数据库是使用 Azure 资源管理创建的。
【解决方案2】:

经过进一步研究,我在 Azure 中找到了一个比较满意的解决方案:

  1. 转到 Azure Monitor 指标(预览版)
  2. 就我而言,我使用的是 sql 弹性池,因此我将其添加为 Resource 指标“storaged_used”
  3. 通过“数据库 ARM 资源 ID”添加拆分将为您提供用于每个的存储
    您池中的 SQL 数据库(按资源 ID)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多