磁盤IO利用率監(jiān)控VBS腳本(windows)
核心代碼
'程序名稱: btlwchk_DiskIO.vbs
'版權(quán)信息: Copyright (c) 2011 guangzhou bluetech technology Incorporated.All rights reserved
'程序用途: 監(jiān)測windows主機(jī)IO利用率
'創(chuàng)建日期: 2011-08-10
'作者信息: zhangkai
'運(yùn)行環(huán)境: vbs
'處理參數(shù)
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,需要的朋友可以參考一下
上一篇:沒有了
欄 目:vb
下一篇:VBS遍歷Excel工作表的實(shí)現(xiàn)代碼
本文標(biāo)題:磁盤IO利用率監(jiān)控VBS腳本(windows)
本文地址:http://www.jygsgssxh.com/a1/vb/7078.html
您可能感興趣的文章
- 01-10windows.vbs.FSO.文件操作信息.磁盤驅(qū)動(dòng)信息.文件夾操作信息全集
- 01-10用VBS調(diào)用程序并對(duì)程序的運(yùn)行情況進(jìn)行監(jiān)控的兩個(gè)代碼
- 01-10用vbs刪除某些類型文件和磁盤空間報(bào)告的腳本
- 01-10進(jìn)程監(jiān)控實(shí)現(xiàn)代碼[vbs+bat]
- 01-10網(wǎng)絡(luò)接口利用率監(jiān)控VBS腳本代碼(Windows)
- 01-10VBS監(jiān)控CPU的使用率(如占用率一直維持在80%超過30秒則運(yùn)行某程序
- 01-10VBScript 監(jiān)控磁盤更改事件實(shí)現(xiàn)代碼
- 01-10VBScript 監(jiān)控并結(jié)束指定進(jìn)程的代碼
- 01-10vbs判斷磁盤類型和檢測硬盤剩余空間的實(shí)現(xiàn)代碼
- 01-10監(jiān)測windows主機(jī)網(wǎng)絡(luò)接口利用率的vbs代碼


閱讀排行
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實(shí)例說明
隨機(jī)閱讀
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改


