.:The Tube:. The Tube

Simple Mail Benachrichtigung der Diskauslastung

Einführung

Dieses Crash Tutorial zeigt Dir wie man mit einem Skript die Diskauslastung der Server ueberwacht.
Getestet wurde dieses Tutorial auf Windows 2003 SP2
Falls Du fragen oder anregungen hast kannst Du mir jederzeit ein Mail schreiben (tutorial@thetube.ch).

1. Was es dazu braucht :

2. Script vorbereiten und ergänzen :

Es wird ein neues VBScript erstellt. Das Script sendet eine Mail an den Administrator sobald die Disk Auslastung unter 10% erreicht.
Server1 - Server5 sind die Namen der zu überwachenden Server.
exchange.local.ch ist zu ersetzen mit dem lokalen Exchange Server.
Dim Server(4)
Server(0) = "Server1"
Server(1) = "Server2"
Server(2) = "Server3"
Server(3) = "Server4"
Server(4) = "Server5"


Quota = 10
SendMail = False

set wshFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
set NewFile = wshFSO.CreateTextFile("server_status.html", True)


NewFile.WriteLine "<?xml version=""1.0"" encoding=""ISO-8859-1""?>"
NewFile.WriteLine "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www. w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">"
NewFile.WriteLine "<head>"
NewFile.WriteLine "<title>Server Diskspace</title>"
NewFile.WriteLine "</style>  </head>"
NewFile.WriteLine "<body>"
NewFile.WriteLine "<basefont face=""Arial"">"
NewFile.WriteLine "<h2 id=""sitetitle"">Server Diskspace</h2><br>"
NewFile.WriteLine "<table border=""0"" class=""contborder"">"

For i = 0 to UBound(Server)
 getdiskspace(Server(i))
Next

NewFile.WriteLine "</table>"
NewFile.WriteLine "</body>"
NewFile.WriteLine "</html>"
NewFile.close

if SendMail = True Then
	MailRec = "admin@example.ch"
      	MailCmd = "c:windows\system32\blat.exe server_status.html -server exchange.local.ch -t " & MailRec & " -f serverstatus@example.ch -s ""Server Status"""
      	objShell.Run MailCmd, 0, True
	wscript.quit(0)
else
	wscript.quit(0)
End if

Function GetDiskSpace( strComputer )
		NewFile.WriteLine "<tr></tr><tr></tr>" 
		NewFile.WriteLine "<tr>"
 		NewFile.WriteLine "<td><b>Server Name</b></td>"
 		NewFile.WriteLine "<td><b>Drive</b></td>"
 		NewFile.WriteLine "<td><b>Size</b></td>"
 		NewFile.WriteLine "<td><b>Free</b></td>"
 		NewFile.WriteLine "<td><b>Free (%)</b></td>"
 		NewFile.WriteLine "</tr>"   
		NewFile.WriteLine "<tr></tr><tr></tr>" 

	On Error Resume Next
	Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
	If Err.Number Then
		WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _
		             " " & Err.Description
		Err.Clear
		Syntax
	End If
	On Error GoTo 0
	Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
	For Each objItem in colItems
	NewFile.WriteLine "<tr></tr>" 

	if  Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) )  < Quota then
 		NewFile.WriteLine "<tr>"
 		NewFile.WriteLine "<td>" & strComputer & "</td>"
 		NewFile.WriteLine "<td style=""width: 20px; background-color: red;"">" & objItem.Name & "</td>"
 		NewFile.WriteLine "<td align=""right"">" & CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) ) & "</td>"
 		NewFile.WriteLine "<td align=""right"">" & CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) ) & "</td>"
 		NewFile.WriteLine "<td align=""right"">" & CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & "</td>"
 		NewFile.WriteLine "</tr>"   
		SendMail = True
		 
	else
 		NewFile.WriteLine "<tr>"
 		NewFile.WriteLine "<td>" & strComputer & "</td>"
 		NewFile.WriteLine "<td style=""width: 20px; background-color: green;"">" & objItem.Name & "</td>"
 		NewFile.WriteLine "<td align=""right"">" & CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) ) & "</td>"
 		NewFile.WriteLine "<td align=""right"">" & CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) ) & "</td>"
 		NewFile.WriteLine "<td align=""right"">" & CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & "</td>"
 		NewFile.WriteLine "</tr>"  
		
	end if
	Next
End Function

3. Testen :

VBScript aufrufen. Sollte ein Server unter 10% liegen wird eine Mail ausgelöst. Dieses Script kann man z.B. jede Stunde laufen lassen (Via Scheduler)

Referenzen

  1. Windows 2003 Server — Offizielle Windows 2003 Server Seite
  2. Blat Seite — Offizielle Blat Seite
Zurück