多个数据库的Azure SQL Server监控/警报(v12)

时间:2018-05-29 06:49:22

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

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

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

  

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

创建的

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分:0)

经过一番深思熟虑之后,我在Azure中找到了一个令人满意的解决方案:

  1. 转到Azure监视器指标(预览)
  2. 就我而言,我使用的是sql弹性池,所以我将其添加为Resource with metric" storaged_used"
  3. 按"数据库ARM资源ID"添加拆分会给你每个用的存储空间 资源ID中池中的SQL数据库。