我需要能够监测的zabbix数据库文件空间。 我已经尝试了很多的用于监控SQL Server中的模板,他们似乎并没有做什么,我需要他们做。 从本质上讲,我需要在一个数据库文件就知道或日志文件(密度纤维板或.LDF)为特定的数据库是充满一定比例之内。
基本上我希望:
- 发现所有数据和服务器上的每个数据库中的日志文件
- 创建两个项目的每个文件,用空间和最大空间(考虑到自动增长)
- 创建该会提醒我,当一个数据或日志文件的每个文件触发的充满(80%满警告,作为一个例子90%的临界)的一定比例之内
使用ODBC是不是一种选择,由于我们的环境和网络限制的大小。 我相信我使用PowerShell,然后另一个脚本,为项目获取的值需要某种类型的发现脚本,但我不知道。
不知道的zabbix是什么(我将在后面偷看),但在SQL Server中,你有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