是否可以从Azure SQL数据库资源获取分配的存储数据百分比指标以创建警报?

问题描述

我想创建一个警报,该警报将监视Azure中SQL数据库的已分配数据存储,以便我知道它何时将达到其已分配数据存储容量。理想情况下, storage_percent 之类的东西将是完美的,因为它监视百分比而不是字节数。但是我想跟踪分配的数据存储。

以下是警报可以监控的指标列表:https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-supported#microsoftsqlserversdatabases

没有任何指标可以跟踪百分比,只能跟踪字节。 ( allocated_data_storage 具有 Bytes 个单位)

目前,我的解决方法是以字节为单位检索分配的数据存储,然后将该值乘以我希望收到警报的阈值。

e.g.
threshold to trigger alert is 75%
allocated_data_storage is 4 GB
alert me when database storage is greater than 4 GB * 0.75 = 3 GB

但是,这似乎并不可靠,因为数据库倾向于按数据大小扩展/缩小。因此,如果分配的数据存储增加到10 GB,我的警报仍将监视3 GB以下的数据存储,现在该数据不足分配的75%的存储空间。

解决方法

我们可以在Portal上获得已用空间/已分配空间/最大存储大小: enter image description here

或者您在数据库中使用以下查询:

-- Connect to database
-- Get database data space allocated in MB,max database stroage in MB and database data space allocated used in MB
SELECT SUM(size/128.0) AS DatabaseDataSpaceAllocatedInMB,SUM(max_size/128.0) AS DatabaseDataSpaceMaxInMB,SUM (CAST(FILEPROPERTY(name,'SpaceUsed') AS int)/128.0) AS DatabaseDataSpaceUsedInMB 
FROM sys.database_files
GROUP BY type_desc
HAVING type_desc = 'ROWS'

enter image description here

您可以使用值创建一个新查询,以获取用于构建警报规则的警报值,例如AllocatedSpace/UsedSpace的百分比。

由于Azure SQL数据库不支持发送电子邮件功能,我们可以使用Logic应用程序来触发它:

  1. 创建一个Recurrence触发器:安排运行触发器。
  2. 添加执行SQL查询操作:以获取警报值。
  3. 添加Condition:判断警报值是否大于 75,如果是,请发送电子邮件!

逻辑应用程序示例概述:

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...