在多个数据库上监控某个指标并向其发出警报的最佳方法是什么。例如,如果数据库大小超过10 GB,我想触发警报。
我知道您可以选择单个数据库并在Azure Monitor中进行配置,但是当有数百个这样的数据时,这似乎不可行。
我的数据库是使用 Azure资源管理
创建的
答案 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中找到了一个令人满意的解决方案: