我想通过电子邮件得到一个警报,只要可用的内存低于我的Windows Server 2012的某个阈值
为此,我使用用户定义的性能监视器数据收集器集。 我已经configuration了性能计数器和警报标准的Data Collector。 我已经设置了警报任务(并且任务是在任务计划程序中设置的)。 所有的工作正常,我通过电子邮件得到警报。
我的问题是关于数据采集器采样间隔。 我已经设定好了,比如60秒,因为我想每分钟检查一次低内存。 但是,我不希望每60秒钟发一次警报(我宁愿每15分钟一次)。
有没有办法有一个不同于采样间隔的警报间隔?
我将设置“启动程序”任务的操作,而不是“发送电子邮件”。 要启动的程序是Powershell脚本,请执行以下操作:检查发送的最后一次警报的时间,如果最后一次警报超过15分钟,则使用Send-MailMessage发送新警报,并更新最后一次警报时间。 您可以将最后的警报时间存储在脚本旁边的帮助程序文件中或其他位置。
示例脚本:
$timeFile = "[PATH TO TIME FILE]" $needNewAlert = true if (Test-Path $timeFile -PathType Leaf) { $starttime = [datetime](Get-Content $timeFile) $timespan = New-TimeSpan -Start $starttime -End (Get-Date -Format u) if ($timespan.TotalMinutes -lt 15.0) { $needNewAlert = false } } if ($needNewAlert) { Send-MailMessage -From [email protected] -To [email protected] -Subject "I'm in too deep!" Get-Date -Format u > $timeFile }
另外:通过将参数/标志传递给脚本来指示问题的根源,您可以通过使用一个脚本实现多个触发器,进一步减less来自给定系统的警报电子邮件的数量。 你必须跟踪每个问题的最后警报时间(一种方法是将源/时间戳对保存在字典/散列表中,并使用Export-CliXML将对象保存到文件中并加载该对象与Import-CliXML ),那么你可以让电子邮件的主体是以这种方式报告的所有当前问题的摘要。