2010-12-20 55 views
2

我已经使用Visual Studio .NET和C#构建了一个Windows服务应用程序。这项服务将部署在几百台机器上,我正在寻找稳定的方式来监控应用程序。通过监视器,我的意思是,我只是想检查它是否正在运行,并检查每个客户端上几个设置的状态。监视自定义Windows服务

有没有这样做的常用方法?

+1

为了处理监控,我最终编写了一个rails应用程序并将其部署到heroku。这简单愚蠢,一直在努力工作。反正大约48小时.. – 2010-12-22 06:03:04

回答

7

最简单的做法是让每个应用程序“回家”。创建一个中央应用程序,最好是一个Web应用程序,并让远程应用程序在任何需要的时间间隔内对中央应用程序进行小型调用。他们可以包含您想要监控的额外信息。

保留应用程序部署位置的列表,并且如果在预期的时间范围内没有从列表中的任何人获得呼叫,那么您知道它处于脱机状态。

如果您无法更改您正在监控的实际应用程序,请编写一个小型协同应用程序,该程序可作为计划任务运行,并执行相同的本地检查并回拨至中央应用程序。

我们用全球数千台客户端机器完成此项工作,效果良好。

+0

这是一个好主意。我不会想到这个! – devlord 2014-04-07 22:06:20

5

您可以编写一个小监视器实用程序,通过SCM检查服务状态并提供一个简单的HTTP接口,以便您可以轮询状态。如果服务状态发生变化,这基本上只是一个很大的循环而已。

while (true) 
{ 
    string serviceName = "NameOfYourService"; 
    ServiceController Svc = new ServiceController(serviceName); 
    if (Svc.Status != ServiceControllerStatus.Running) 
    { 
     //Do reporting/set status here 
    } 
    Thread.Sleep(5000); 
}