磁盘IO利用率监控VBS脚本(windows)

2023-12-08 0 745

核心代码

\’程序名称: btlwchk_DiskIO.vbs
\’版权信息: Copyright (c) 2011 guangzhou bluetech technology Incorporated.All rights reserved
\’程序用途: 监测windows主机IO利用率
\’创建日期: 2011-08-10
\’作者信息: zhangkai
\’运行环境: vbs
\’处理参数
MonSubject=\”DiskIO\”
Set Args=WScript.Arguments
If (Args.Count<1) Then
Wscript.Echo MonSubject & \” -1:command line error\”
WScript.Quit(3)
End If
strcid=Args(0)
\’获取工作目录
tmparr=Split(Wscript.ScriptFullName,\”\\\”,-1)
g_strworkdir=tmparr(0)
narr=UBound(tmparr,1)
For i=1 to narr-3
g_strworkdir=g_strworkdir & \”\\\” & tmparr(i)
Next
\’装载公共库
set g_fileSys = createObject (\”Scripting.FileSystemObject\”)
Sub includeFile (fSpec)
dim file, fileData
set file = g_fileSys.openTextFile (fSpec)
fileData = file.readAll ()
file.close
executeGlobal fileData
set file = nothing
end sub
includeFile g_strworkdir & \”\\nagios\\libexec\\libcomm.vbs\”

\’输出版本和帮助信息
getverhelp strcid,\”v1.00\”,\” <cid>\”

strComputer = \”.\”
Set objWMIService = GetObject(\”winmgmts:\” & \”{impersonationLevel=impersonate}!\\\\\” & strComputer & \”\\root\\cimv2\”)

\’第1次采样IO
Set colItems = objWMIService.ExecQuery(\”Select * from Win32_PerfRawData_PerfDisk_LogicalDisk where name=\’_Total\’ \”,,48)
For Each objItem in colItems
DiskTime1 = objItem.PercentDiskTime
BaseTime1 = objItem.PercentDiskTime_Base
DiskBytes1 = objItem.DiskBytesPerSec
DiskReadBytes1 = objItem.DiskReadBytesPerSec
DiskWriteBytes1 = objItem.DiskWriteBytesPerSec
AvgDiskTransfer1 = objItem.AvgDiskSecPerTransfer
AvgDiskTransferBase1 = objItem.AvgDiskSecPerTransfer_Base
AvgDiskRead1 = objItem.AvgDiskSecPerRead
AvgDiskReadBase1 = objItem.AvgDiskSecPerRead_Base
AvgDiskWrite1 = objItem.AvgDiskSecPerWrite
AvgDiskWriteBase1 = objItem.AvgDiskSecPerWrite_Base
TimeValue1 = objItem.Timestamp_PerfTime
TimeBase = objItem.Frequency_PerfTime

Next

\’第2次采样IO
WScript.Sleep 1000
Set colItems = objWMIService.ExecQuery(\”Select * from Win32_PerfRawData_PerfDisk_LogicalDisk where name=\’_Total\’ \”,,48)
For Each objItem in colItems
DiskTime2 = objItem.PercentDiskTime
BaseTime2 = objItem.PercentDiskTime_Base
DiskBytes2 = objItem.DiskBytesPerSec
DiskReadBytes2 = objItem.DiskReadBytesPerSec
DiskWriteBytes2 = objItem.DiskWriteBytesPerSec
AvgDiskTransfer2 = objItem.AvgDiskSecPerTransfer
AvgDiskTransferBase2 = objItem.AvgDiskSecPerTransfer_Base
AvgDiskRead2 = objItem.AvgDiskSecPerRead
AvgDiskReadBase2 = objItem.AvgDiskSecPerRead_Base
AvgDiskWrite2 = objItem.AvgDiskSecPerWrite
AvgDiskWriteBase2 = objItem.AvgDiskSecPerWrite_Base
TimeValue2 = objItem.Timestamp_PerfTime
CurrentDiskQueueLength = objItem.CurrentDiskQueueLength
Next

\’获取IO利用率
If BaseTime2 – BaseTime1 = 0 Then
strio =\”Name=_Toltal\” & \”,PercentDiskTime=0%\”
Else
PercentDiskTime =(DiskTime2 – DiskTime1)/(BaseTime2 – BaseTime1)*100
strio = \”Name=_Total\” & \”,PercentDiskTime=\” & PercentDiskTime
End If

\’获取Disk Bytes/sec
If TimeValue2 – TimeValue1 = 0 Then
strdiskbyte = \”,DiskBytesPerSec=0\”
Else
DiskBytesPerSec = (DiskBytes2 – DiskBytes1) / ( (TimeValue2 – TimeValue1) / TimeBase)
strdiskbyte = \”,DiskBytesPerSec=\” & DiskBytesPerSec
End If

\’获取Disk Read Bytes/sec
If TimeValue2 – TimeValue1 = 0 Then
strdiskreadbyte = \”,DiskReadBytesPerSec=0\”
Else
DiskReadBytesPerSec = (DiskReadBytes2 – DiskReadBytes1) / ( (TimeValue2 – TimeValue1) / TimeBase)
strdiskreadbyte = \”,DiskReadBytesPerSec=\” & DiskReadBytesPerSec
End If

\’获取Disk Write Bytes/sec
If TimeValue2 – TimeValue1 = 0 Then
strdiskwritebyte = \”,DiskWriteBytesPerSec=0\”
Else
DiskWriteBytesPerSec = (DiskWriteBytes2 – DiskWriteBytes1) / ( (TimeValue2 – TimeValue1) / TimeBase)
strdiskwritebyte = \”,DiskWriteBytesPerSec=\” & DiskWriteBytesPerSec
End If

\’获取Avg. Disk sec/Transfer
If AvgDiskTransferBase2 – AvgDiskTransferBase1 = 0 Then
stravgdisktran = \”,AvgDiskSecPerTransfer=0\”
Else
AvgDiskSecPerTransfer = ((AvgDiskTransfer2 – AvgDiskTransfer1) / TimeBase) / (AvgDiskTransferBase2 – AvgDiskTransferBase1)
stravgdisktran = \”,AvgDiskSecPerTransfer=\” & AvgDiskSecPerTransfer
End If

\’获取Avg. Disk sec/Read
If AvgDiskReadBase2 – AvgDiskReadBase1 = 0 Then
stravgdiskread = \”,AvgDiskSecPerRead=0\”
Else
AvgDiskSecPerRead = ((AvgDiskRead2 – AvgDiskRead1) / TimeBase) / (AvgDiskReadBase2 – AvgDiskReadBase1)
stravgdiskread = \”,AvgDiskSecPerRead=\” & AvgDiskSecPerRead
End If

\’获取Avg. Disk sec/Write
If AvgDiskWriteBase2 – AvgDiskWriteBase1 = 0 Then
stravgdiskwrite = \”,AvgDiskSecPerWrite=0\”
Else
AvgDiskSecPerWrite = ((AvgDiskWrite2 – AvgDiskWrite1) / TimeBase) / (AvgDiskWriteBase2 – AvgDiskWriteBase1)
stravgdiskwrite = \”,AvgDiskSecPerWrite=\” & AvgDiskSecPerWrite
End If

\’获取Current Disk Queue Length
strdisklength = \”,CurrentDiskQueueLength=\” & CurrentDiskQueueLength

Wscript.Echo MonSubject & \” 0:OK|\” & strio & strdiskbyte & strdiskreadbyte & strdiskwritebyte & stravgdisktran & stravgdiskread & stravgdiskwrite & strdisklength

用到了WMI,需要的朋友可以参考一下

您可能感兴趣的文章:

  • vbs定期监控 值个班,定期瞄一下
  • VBScript 监控并结束指定进程的代码
  • VBScript 监控磁盘更改事件实现代码
  • VBS监控CPU的使用率(如占用率一直维持在80%超过30秒则运行某程序)
  • 网络接口利用率监控VBS脚本代码(Windows)
  • 进程监控实现代码[vbs+bat]
  • 用VBS调用程序并对程序的运行情况进行监控的两个代码
  • 如何使用vb 监控电脑活动记录

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 VBS 磁盘IO利用率监控VBS脚本(windows) https://www.u-9.cn/jiaoben/vbscript/130591.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务