监视自定义Windows服务

时间:2010-12-20 03:27:50

标签: c# .net windows-services

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

有没有一种常用的方法呢?

3 个答案:

答案 0 :(得分:7)

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

保留部署应用程序的位置列表,如果在预期的时间范围内没有从列表中的任何人那里接到电话,那么您就知道它处于离线状态。

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

我们在全球拥有数千台客户端机器,并且运行良好。

答案 1 :(得分: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);
}

答案 2 :(得分:0)

例如,您可以利用Zabbix之类的监视工具。