免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5176 | 回复: 0
打印 上一主题 下一主题

求助:nagios监控windows磁盘IO [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-15 18:13 |只看该作者 |倒序浏览
RT
新的需求是nagios监控服务器磁盘IO,目前监控Linux系统的磁盘IO已通过nagios提供的iostat插件实现,并可以顺利获取数值。
windows的磁盘IO应该是调取WMI的数值,现在利用vbs脚本以实现数值获取,在传值方面遇到了问题,麻烦有相关经验的同学帮帮忙,讲解一下,多谢。

附上我目前的vbs脚本
第一个脚本,分窗体弹出逻辑磁盘的信息
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  3. set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
  4. Set colDisks = objRefresher.AddEnum(objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet
  5. strFileDir = left(Wscript.ScriptFullName,len(Wscript.ScriptFullName)-len(Wscript.ScriptName))
  6. strFileName = strFileDir + "DiskMonitor.xls"
  7. Set oExcel = CreateObject( "Excel.Application" )
  8. oExcel.WorkBooks.open(strFileName)
  9. oExcel.DisplayAlerts = False
  10. If Wscript.Arguments.Count = 0 Then
  11.         MsgBox "输入参数错误!"
  12. End If
  13. If Wscript.Arguments.Count = 1 Then
  14.         RowNum = 4
  15.         Interval = CInt(Wscript.Arguments(0)) * 1000
  16.         oExcel.Cells(1,1).Value = "运行命令为:DiskMonitor.vbs " + Wscript.Arguments(0)
  17.         oExcel.Cells(1,2).Value = "运行时间为:" +  CStr(Time())
  18.         oExcel.Cells(3,1).Value = "Device"
  19.         oExcel.Cells(3,2).Value = "TPS"
  20.         oExcel.Cells(3,3).Value = "kB_read/s"
  21.         oExcel.Cells(3,4).Value = "kB_wrtn/s"
  22.         oExcel.Cells(3,5).Value = "Free Space"
  23.         Do While True
  24.                 objRefresher.Refresh
  25.                
  26.                 ColumnsNum = 1
  27.                 For Each objDisk in colDisks
  28.                         oExcel.Cells(RowNum,1).Value = CStr(objDisk.Name)
  29.                         oExcel.Cells(RowNum,2).Value = CStr(objDisk.DiskTransfersPerSec)
  30.                         oExcel.Cells(RowNum,3).Value = CStr(objDisk.DiskReadBytesPerSec)
  31.                         oExcel.Cells(RowNum,4).Value = CStr(objDisk.DiskWriteBytesPerSec)
  32.                         oExcel.Cells(RowNum,5).Value = CStr(objDisk.PercentFreeSpace) + "%"
  33.                         RowNum = RowNum + 1
  34.                 Next
  35.                 Wscript.Sleep Interval
  36.         Loop
  37. End If
  38. If Wscript.Arguments.Count = 2 Then
  39.         i = 0
  40.         RowNum = 4
  41.         Interval = CInt(Wscript.Arguments(0)) * 1000
  42.         Count = CInt(Wscript.Arguments(1))
  43.         oExcel.Cells(1,1).Value = "运行命令为:DiskMonitor.vbs " + CStr(Wscript.Arguments(0)) + " " + CStr(Wscript.Arguments(1))
  44.         oExcel.Cells(1,2).Value = "运行时间为:" + CStr(Time())
  45.         oExcel.Cells(3,1).Value = "Device"
  46.         oExcel.Cells(3,2).Value = "TPS"
  47.         oExcel.Cells(3,3).Value = "kB_read/s"
  48.         oExcel.Cells(3,4).Value = "kB_wrtn/s"
  49.         oExcel.Cells(3,5).Value = "Free Space"
  50.         Do While i < Count
  51.                 objRefresher.Refresh
  52.                
  53.                 For Each objDisk in colDisks
  54.                         oExcel.Cells(RowNum,1).Value = CStr(objDisk.Name)
  55.                         oExcel.Cells(RowNum,2).Value = CStr(objDisk.DiskTransfersPerSec)
  56.                         oExcel.Cells(RowNum,3).Value = CStr(objDisk.DiskReadBytesPerSec)
  57.                         oExcel.Cells(RowNum,4).Value = CStr(objDisk.DiskWriteBytesPerSec)
  58.                         oExcel.Cells(RowNum,5).Value = CStr(objDisk.PercentFreeSpace) + "%"
  59.                         RowNum = RowNum + 1
  60.                 Next
  61.                 Wscript.Sleep Interval
  62.                 i = i + 1
  63.         Loop
  64. End If
  65. oExcel.Workbooks(1).Save
  66. oExcel.Workbooks(1).Close
  67. oExcel.Quit
复制代码
[/code]
第二个脚本,收集到信息后写入同目录下的DiskMonitor.xls表中
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  3. set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
  4. Set colDisks = objRefresher.AddEnum(objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet
  5. strFileDir = left(Wscript.ScriptFullName,len(Wscript.ScriptFullName)-len(Wscript.ScriptName))
  6. strFileName = strFileDir + "DiskMonitor.xls"
  7. Set oExcel = CreateObject( "Excel.Application" )
  8. oExcel.WorkBooks.open(strFileName)
  9. oExcel.DisplayAlerts = False
  10. If Wscript.Arguments.Count = 0 Then
  11.         MsgBox "输入参数错误!"
  12. End If
  13. If Wscript.Arguments.Count = 1 Then
  14.         RowNum = 4
  15.         Interval = CInt(Wscript.Arguments(0)) * 1000
  16.         oExcel.Cells(1,1).Value = "运行命令为:DiskMonitor.vbs " + Wscript.Arguments(0)
  17.         oExcel.Cells(1,2).Value = "运行时间为:" +  CStr(Time())
  18.         oExcel.Cells(3,1).Value = "Device"
  19.         oExcel.Cells(3,2).Value = "TPS"
  20.         oExcel.Cells(3,3).Value = "kB_read/s"
  21.         oExcel.Cells(3,4).Value = "kB_wrtn/s"
  22.         oExcel.Cells(3,5).Value = "Free Space"
  23.         Do While True
  24.                 objRefresher.Refresh
  25.                
  26.                 ColumnsNum = 1
  27.                 For Each objDisk in colDisks
  28.                         oExcel.Cells(RowNum,1).Value = CStr(objDisk.Name)
  29.                         oExcel.Cells(RowNum,2).Value = CStr(objDisk.DiskTransfersPerSec)
  30.                         oExcel.Cells(RowNum,3).Value = CStr(objDisk.DiskReadBytesPerSec)
  31.                         oExcel.Cells(RowNum,4).Value = CStr(objDisk.DiskWriteBytesPerSec)
  32.                         oExcel.Cells(RowNum,5).Value = CStr(objDisk.PercentFreeSpace) + "%"
  33.                         RowNum = RowNum + 1
  34.                 Next
  35.                 Wscript.Sleep Interval
  36.         Loop
  37. End If
  38. If Wscript.Arguments.Count = 2 Then
  39.         i = 0
  40.         RowNum = 4
  41.         Interval = CInt(Wscript.Arguments(0)) * 1000
  42.         Count = CInt(Wscript.Arguments(1))
  43.         oExcel.Cells(1,1).Value = "运行命令为:DiskMonitor.vbs " + CStr(Wscript.Arguments(0)) + " " + CStr(Wscript.Arguments(1))
  44.         oExcel.Cells(1,2).Value = "运行时间为:" + CStr(Time())
  45.         oExcel.Cells(3,1).Value = "Device"
  46.         oExcel.Cells(3,2).Value = "TPS"
  47.         oExcel.Cells(3,3).Value = "kB_read/s"
  48.         oExcel.Cells(3,4).Value = "kB_wrtn/s"
  49.         oExcel.Cells(3,5).Value = "Free Space"
  50.         Do While i < Count
  51.                 objRefresher.Refresh
  52.                
  53.                 For Each objDisk in colDisks
  54.                         oExcel.Cells(RowNum,1).Value = CStr(objDisk.Name)
  55.                         oExcel.Cells(RowNum,2).Value = CStr(objDisk.DiskTransfersPerSec)
  56.                         oExcel.Cells(RowNum,3).Value = CStr(objDisk.DiskReadBytesPerSec)
  57.                         oExcel.Cells(RowNum,4).Value = CStr(objDisk.DiskWriteBytesPerSec)
  58.                         oExcel.Cells(RowNum,5).Value = CStr(objDisk.PercentFreeSpace) + "%"
  59.                         RowNum = RowNum + 1
  60.                 Next
  61.                 Wscript.Sleep Interval
  62.                 i = i + 1
  63.         Loop
  64. End If
  65. oExcel.Workbooks(1).Save
  66. oExcel.Workbooks(1).Close
  67. oExcel.Quit
复制代码
[/code]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP