如何使用的zabbix监控数据库文件的大小(How to monitor database file

2019-10-29 05:07发布

我需要能够监测的zabbix数据库文件空间。 我已经尝试了很多的用于监控SQL Server中的模板,他们似乎并没有做什么,我需要他们做。 从本质上讲,我需要在一个数据库文件就知道或日志文件(密度纤维板或.LDF)为特定的数据库是充满一定比例之内。

基本上我希望:

  1. 发现所有数据和服务器上的每个数据库中的日志文件
  2. 创建两个项目的每个文件,用空间和最大空间(考虑到自动增长)
  3. 创建该会提醒我,当一个数据或日志文件的每个文件触发的充满(80%满警告,作为一个例子90%的临界)的一定比例之内

使用ODBC是不是一种选择,由于我们的环境和网络限制的大小。 我相信我使用PowerShell,然后另一个脚本,为项目获取的值需要某种类型的发现脚本,但我不知道。

Answer 1:

不知道的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


文章来源: How to monitor database file size using Zabbix