磁盘空间不足电子邮件警报

磁盘空间不足电子邮件警报

很简单,我试图从 Windows 2003 服务器触发电子邮件警报,以通知我磁盘空间何时不足。

有人有这样的设置经验吗?

谢谢。

答案1

与其只为这一项创建警报,不如考虑设置 Nagios 或类似程序。然后,您可以让它监控任何您喜欢的东西,并在超出预定义参数时提醒您。设置它所需的时间相对较短,但可以让您免于手动监控和检查,这比设置它更有价值。

答案2

几个选项:

a) 安装监控代理(例如 nsclient++)并让监控系统(例如 Nagios)对其进行监控,并在磁盘空间不足时向您发出警报;

b) 创建每分钟触发一次的计划任务,读取相应的 WMI 计数器(例如 \\LogicalDisk(C:)\\Free Megabytes)并使用 CDO.Message WScript 对象发送邮件(示例如下:http://blogs.technet.com/heyscriptingguy/archive/2004/11/29/how-can-i-attach-a-file-to-an-email-sent-using-cdo.aspx

答案3

nagios (或类似 opsview 的衍生产品) 和 nsclient++ 获得 +1。如果您懂脚本,您可以轻松地为任何您可能需要的东西编写自己的自定义插件。

如果您尚未监控,请立即开始!

答案4

看这里:Microsoft 知识库 324796

我在我们的环境中使用了它,效果很好。您确实需要一个 SMTP 服务器来发送消息,但不必是同一个盒子。

我会检查内存不足(每 5 分钟检查一次,看看可用内存是否低于 100 MB)、处理器监视器(每 30 秒检查一次,确保处理器运行速度不超过 95%)和磁盘空间不足(每 30 分钟检查一次,确保磁盘空间不低于 20%)。这些都很容易添加,而且我没有遇到任何问题。

以下是我用于发出有关高 CPU 使用率警报的 VBScript 文件。如有必要,您可以修改脚本以包含凭据:

' Get command line parameters
Dim ArgObj
Set ArgObj = WScript.Arguments 
Dim strFrom, strTo, strSubject, strBody, strIPAddress
strFrom = "SERVERNA<E <[email protected]>"
strTo = "RECIPIENT <[email protected]>"
strSubject = "Automated CPU Alert from SERVERNAME"
strIPAddress = "IPADDRESS"

' get the body from the command line
If ArgObj.Count > 0 Then
strBody = ArgObj( 0 )

' if the subject is specified as an argument then add it
If ArgObj.Count > 1 Then
strSubject = ArgObj( 1 )
End If
Else
strBody = "Default alert message body" 
End if

Call SendEmail( strFrom, strTo, strSubject, strBody )

' release memory
Set ArgObj = Nothing

' Sub-routing to send an e-mail using the CDO component
Sub SendEmail(sFromEmail, sToEmail, sSubject, sText )

Dim objMail
Set objMail = CreateObject( "CDO.Message" )
objMail.From = sFromEmail
objMail.To = sToEmail
objMail.Subject = sSubject

' Send using an SMTP server
objMail.Configuration.Fields.Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ) = 2

' Name or IP of remote SMTP server
objMail.Configuration.Fields.Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ) = strIPAddress

' Server port
objMail.Configuration.Fields.Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ) = 25 

objMail.Configuration.Fields.Update
objMail.TextBody = sText
objMail.Send

Set objMail = nothing

End Sub

相关内容