监视某个指标并在多个数据库上对其发出警报的最佳方法是什么 . 例如,如果数据库大小超过10 GB,我想触发警报 .
我知道您可以选择单个数据库并在Azure监视器中进行配置,但是当有数百个时,这似乎不可行 .
我的数据库是使用Azure资源管理创建的
我认为PowerShell,特别是Get-AzureSqlDatabaseUsages命令,是你最好的朋友 . 我在过去做过这个修改过的"heartbeat" . 我们还分析了索引碎片,并在需要时触发 REBUILD .
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';
经过一番钻研后,我在Azure中找到了一个令人满意的解决方案:
转到Azure Monitor指标(预览)
在我的情况下,我使用的是一个sql弹性池,所以我添加了这个作为资源的度量标准"storaged_used"
按"Database ARM Resource Id"添加拆分将为您提供每个用于存储的存储空间资源ID中池中的SQL数据库 .
2 回答
我认为PowerShell,特别是Get-AzureSqlDatabaseUsages命令,是你最好的朋友 . 我在过去做过这个修改过的"heartbeat" . 我们还分析了索引碎片,并在需要时触发
REBUILD
.上面的PowerShell命令示例:
这将要求您进行身份验证,但这本身也很简单 .
您可以按计划(即作为WebJob或计划任务)执行脚本,并根据某些度量标准阈值进行报告/通知 .
经过一番钻研后,我在Azure中找到了一个令人满意的解决方案:
转到Azure Monitor指标(预览)
在我的情况下,我使用的是一个sql弹性池,所以我添加了这个作为资源的度量标准"storaged_used"
按"Database ARM Resource Id"添加拆分将为您提供每个用于存储的存储空间
资源ID中池中的SQL数据库 .