Azure sql database 是否有方法从Azure SQL数据库资源获取用于创建警报的已分配存储数据百分比指标?

Azure sql database 是否有方法从Azure SQL数据库资源获取用于创建警报的已分配存储数据百分比指标?,azure-sql-database,alert,metrics,azure-monitoring,Azure Sql Database,Alert,Metrics,Azure Monitoring,我想创建一个警报,用于监视Azure中SQL数据库的分配数据存储,以便我知道它何时将达到分配的数据存储容量。理想情况下,像storage_percent这样的东西是完美的,因为它监视百分比而不是字节。但我想跟踪分配的数据存储 以下是警报可监控的指标列表: 没有任何指标可以跟踪百分比,只有字节。(已分配的\u数据\u存储具有字节单位) 目前我的解决方法是检索分配的数据存储(以字节为单位),然后将该值乘以我希望得到提醒的阈值 e.g. threshold to trigger alert is 75

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

以下是警报可监控的指标列表:

没有任何指标可以跟踪百分比,只有字节。(已分配的\u数据\u存储具有字节单位)

目前我的解决方法是检索分配的数据存储(以字节为单位),然后将该值乘以我希望得到提醒的阈值

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%。

我们可以在门户上获取已使用空间/已分配空间/最大存储大小:

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

-- 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'

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

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

  • 创建触发器:计划运行触发器
  • 添加执行SQL查询操作:以获取警报值
  • 新增:判断预警值是否大于 75,如果为真,请发送电子邮件 逻辑应用程序示例概述:


    您使用的是哪种价格层?分配的\u数据\u存储不同于最大存储大小,即数据库的最大配置大小。您想在使用的数据空间大于最大存储大小的75%时收到警报吗?@KalyanChanumolu MSFT否,我想在使用的数据空间大于数据库中已分配存储的75%时收到警报。从最大空间发出警报是不好的,因为在这种情况下,已分配的存储设置为最大空间的70%,因此在触发警报之前会抛出一个错误。@leonyu哪个资源?Hi@ornelasfdev,我知道解决方法可能对您有帮助。我把它贴出来作为答案。如果它对您有帮助,希望您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为填充)。这可能对其他社区成员有益。非常感谢。