Date: 11月 10, 2018
循序渐进:如何从Windows性能监视器触发电子邮件警报
循序渐进:如何从Windows性能监视器触发电子邮件警报
循序渐进:如何从Windows性能监视器触发电子邮件警报
Windows性能计数器警报可以配置为通过使用用户定义的数据收集器集在任何性能监视器(Perfmon)计数器上触发。但是,如果您希望在触发警报时通过电子邮件收到通知,则必须使用Perfmon,任务计划程序和好的'Powershell'的组合。按照以下步骤从Windows性能监视器触发电子邮件警报。
第1步 – 编写Powershell脚本
您需要做的第一件事是编写一个Powershell脚本,在运行时可以发送电子邮件。在研究这个问题时,我发现了很多方法来完成这项任务。 我要向您展示的只是一种方式,但您可以随意尝试并使用适合您环境的方法。在我的实验室中,我没有运行自己的SMTP服务器。我编写了一个可以利用我的Gmail帐户的脚本。您将在我的Powershell脚本中看到,对SMTP服务器进行身份验证的电子邮件帐户的密码是纯文本格式。如果您担心某人可能有权访问您的脚本并发现您的密码,那么您将需要加密您的凭据。Gmail需要和SSL连接。您的密码应该是安全的,就像任何其他电子邮件客户端一样。以下是与Task Scheduler和Perfmon结合使用时Powershell脚本的示例。它们可以在满足任何用户定义的性能计数器阈值条件时自动发送电子邮件警报。在我的环境中,我将其设置为C: Alerts Alerts.ps1
$ counter = $ Args [0] $ dtandtime = $ Args [1] $ ctr_value = $ Args [2] $ threshold = $ Args [3] $ value = $ Args [4] $文件名= “$ ENV:计算机名” $ EmailFrom =“sios@medfordband.com” $ EmailTo =“dave@medfordband.com” $ Subject =“来自$ FileName的警报” $ Body =“数据和警报时间:$ dtandtime`nPerfmon计数器:$ ctr_value`nThreshold值:$ threshold`n当前值:$ value” $ SMTPServer =“smtp.gmail.com” $ SMTPClient = New-Object Net.Mail.SmtpClient($ SmtpServer,587) $ SMTPClient.EnableSsl = $ true $ SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“sios@medfordband.com”,“ChangeMe123”); $ SMTPClient.Send($ EmailFrom,$ EmailTo,$ Subject,$ Body)
从Powershell脚本生成的电子邮件示例如下所示。 你可能已经注意到这个Powershell脚本有四个参数。它还将它们分配给输出中使用的变量。它将计算机名称保存到变量中,该变量用作输出的一部分。通过这样做,该脚本可用于在任何Perfmon警报计数器和任何服务器上发送电子邮件,而无需额外的自定义。
第2步 – 设置计划任务
在任务计划程序中,我们将在以下屏幕截图中显示创建新任务。 为任务命名,您需要记住它以进行下一步。 请注意,没有触发器。此任务实际上将通过我们将在步骤3中设置的Perfmon计数器警报触发。 您想在“操作”选项卡上定义新操作。操作将是启动程序并使用以下输入。请根据您的具体环境进行调整。程序脚本:C: Windows System32 WindowsPowerShell v1.0 powershell.exe添加参数:-File C: Alerts Alerts.ps1 $(Arg0)
第3步 – 创建性能计数器
创建新的数据收集器集添加要监视的性能计数器并设置警报阈值。 创建数据收集器集后,请进入其属性,并确保为每个性能计数器正确设置警报阈值和样本间隔。请记住,如果您每10秒采样一次,那么只要性能计数器超过您设置的阈值,您就应该每隔10秒收到一封电子邮件。 如果选择在应用程序事件日志中记录条目,则不希望在正常的应用程序事件日志中看到任何条目。它将写入应用程序和服务日志目录中的Microsoft-Windows-Diagnosis-PLA / Operational日志。 然后最后我们必须设置一个警报任务,它将触发我们在步骤2中创建的计划任务(EmailAlert)。您会看到我们还传递了一些Powershell脚本使用的Task参数,以自定义具有与Alert相关的确切错误条件的电子邮件。 正确配置Data Collector后,您将需要启动它。 如果您正确配置了所有内容,则应在满足警报阈值时开始查看电子邮件。如果它似乎不起作用,请检查以下内容……
- 手动运行Powershell脚本以确保其有效。您可能需要手动设置一些变量以用于测试目的。在我的情况下,需要稍微调整以使Powershell脚本正常工作,所以从此开始。
- 检查任务历史记录以确保警报计数器正在触发任务。
- 手动运行任务,看它是否触发Powershell。
步骤4 – 将性能计数器设置为自动运行
如果您认为已全部设置为从Windows性能监视器触发电子邮件警报,则还有一个步骤。每当您重新启动服务器时,Perfmon Counter Alert都不会自动启动。为了在重新启动后继续运行,您必须在命令提示符下运行以下命令。注意下面脚本中引用的“警报”是我的用户定义的数据收集器集的名称。
schtasks / create / tn Alerts / sc onstart / tr“logman start Alerts”/ ru system
有一些边缘情况,您可能需要创建另一个触发器来启动Data Collector集。例如,SIOS DataKeeper Perfmon计数器仅从镜像源收集数据。如果您尝试在目标服务器上启动数据收集集,您将看到它无法启动。但是,如果您的群集进行故障转移,则旧目标现在将成为镜像的源,因此您需要开始监视该新源上的DataKeeper计数器。您可以创建一个群集通用脚本资源,在故障转移时启动数据收集器集,但这是另一个主题。确保计数器在新源上运行的更简单方法是设置由EventID触发的计划任务,该事件ID指示服务器正在成为镜像源。在这种情况下,我在两个系统上设置触发器,以便每次发生EventID 23时,Trigger运行Logman以启动数据收集器集。每次发生故障转移时,新系统成为源时会记录事件ID 23,因此数据收集器集将自动开始。 就是这样,如果您关心的任何Perfmon计数器开始失控,您现在可以直接从您的服务器接收电子邮件警报。
您是否喜欢阅读如何从Windows性能监视器触发电子邮件警报?请点击这里了解更多。经Clusteringformeremortals.com许可转载