Sql server 如何使用Zabbix监视数据库文件大小
我需要能够监控Zabbix中的数据库文件空间。我已经试用了许多用于监视SQL Server的模板,但它们似乎并没有达到我所需要的效果。从本质上讲,我需要知道特定数据库的数据库文件或日志文件(.mdf或.ldf)何时在满的一定百分比范围内 基本上,我希望:Sql server 如何使用Zabbix监视数据库文件大小,sql-server,zabbix,Sql Server,Zabbix,我需要能够监控Zabbix中的数据库文件空间。我已经试用了许多用于监视SQL Server的模板,但它们似乎并没有达到我所需要的效果。从本质上讲,我需要知道特定数据库的数据库文件或日志文件(.mdf或.ldf)何时在满的一定百分比范围内 基本上,我希望: 发现服务器上每个数据库中的所有数据和日志文件 为每个文件创建两个项目,使用的空间和最大空间(考虑自动增长) 为每个文件创建一个触发器,当数据或日志文件在满的一定百分比范围内时向我发出警报(例如,80%满警告,90%严重) 由于我们环境的大小和网
sp_MSforeachdb
在这里,我们创建一个#Temp
表来收集服务器上每个数据库的结果
示例
Use Master;
Create table #Temp (DBName varchar(150),FileType varchar(50),MBytes bigint,MBytesMax bigint)
EXEC sp_MSforeachdb '
Insert Into #Temp
Select DBName = ''?''
,FileType = case when physical_name like ''%.mdf'' then ''Database'' else ''Log'' end
,MBytes = try_convert(bigint,size) * 8 / 1024
,MBytesMax = try_convert(bigint,max_size) * 8 / 1024
From [?].sys.database_files
'
Select *
,Pct = convert(decimal(10,1),(MBytes *100.0) / nullif(MBytesMax,0))
From #Temp
返回
DBName FileType MBytes MBytesMax Pct
master Database 4 0 NULL
master Log 1 0 NULL
tempdb Database 816 0 NULL
tempdb Log 894 0 NULL
msdb Database 201 0 NULL
msdb Log 19 2097152 0.0
xxxxxxx Database 761 4096 18.6
xxxxxxx Log 1 2097152 0.0
yyyyyyy Database 533 4096 13.0
yyyyyyy Log 1 2097152 0.0
zzzzzzz Database 1641 4096 40.1
zzzzzzz Log 1 2097152 0.0