我正在寻找一种方法监控某些Windows服务(在Windows Server 2003上)和重新启动,如果有必要 y。这些服务位于不同的服务器上,主要包括SQL Server服务(例如SQL Server代理),还包括一些专有服务。
如果服务停止发出的电子邮件警报也非常有用。
答案 0 :(得分:41)
Windows中内置了“可能足够”的版本。查看服务属性的“恢复”选项卡,可通过services.msc
获得。
您可以通过以下方式对服务失败采取行动:
“运行程序”可能是一个发送邮件的小脚本,例如。
如果您想要一个带有概览仪表板的更大解决方案,那么有很多系统监控解决方案可用。例如,想到SolarWinds IPMonitor,或Nagios或Cacti。
答案 1 :(得分:15)
如果您对某些 .NET 编程感兴趣,System.ServiceProcess命名空间提供了允许您实现,安装和控制Windows服务应用程序的类。
简单示例,在C#中检查和启动服务:
var srv = new ServiceController("MyService");
Console.WriteLine("MyService Status {0}", srv.Status);
if (srv.Status != ServiceControllerStatus.Running)
srv.Start();
答案 2 :(得分:6)
它们可能是一些专用工具,但我只想指出 wmic 工具。
wmic /node:[hostname] service list
能够列出任何计算机的服务
WMIC SERVICE where caption='TELNET' CALL STARTSERVICE
将重新启动telnet服务。
如果您使用脚本语言(能够发送电子邮件)封装wmic,则可以使用您正在查找的监视工具。
答案 3 :(得分:4)
这取决于您想要监控的内容:
对于第一项,您可以将服务配置为启动发送电子邮件警报的脚本。请注意,如果服务由于其控制范围之外的情况而不断重启(依赖于片状网络连接或其他任何方式),这可能会非常烦人。
对于其他两项,您需要某种类型的心跳服务,您可以构建或购买。小心让心跳监视器在其监视的服务本地运行,因为正如我刚才所写,the network is not reliable。
答案 4 :(得分:3)
您可以使用ManageEngine免费Windows服务监视器。使用此功能,您可以启动/停止远程系统中的服务。
http://www.manageengine.com/free-windows-service-monitor/free-windows-service-monitor-index.html
答案 5 :(得分:1)
+1,用于确保在本地计算机上监控服务。
像Service Hawk之类的东西可以监控您的服务,如果他们应该停止并向您发送电子邮件提醒,则重新启动它们。您还可以考虑安排定期重启,因为如另一张海报所述,就SCM而言,服务并不总是显示为“已停止”。在这些情况下,服务被挂起,冻结或以其他方式混乱并且每隔一段时间就按计划重新启动服务以使其保持干净运行。它只是清除了记忆等,并给它一个新的开始。
答案 6 :(得分:0)
您是否会对名为Blade Logic Configuration Manager的Blade Logic产品感兴趣?它不是免费的,但它可以比监视Windows服务做更多的事情。仔细看看。 它将完成您在问题中提出的所有内容以及更多内容
答案 7 :(得分:0)
您可以尝试使用这样的简单VBScript http://themonitoringguy.com/scripts-code/monitoring-windows-services-vbscript/