Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 监视自定义windows服务_C#_.net_Windows Services - Fatal编程技术网

C# 监视自定义windows服务

C# 监视自定义windows服务,c#,.net,windows-services,C#,.net,Windows Services,我已经使用Visual Studio.NET和C#构建了一个windows服务应用程序。这项服务将部署在几百台机器上,我正在寻找一种可靠的方法来监控应用程序。说到监视器,我的意思是,我只想检查它是否正在运行,并检查每个客户机上一些设置的状态 有没有一种常见的方法可以做到这一点?您可以编写一个小的监控实用程序,通过SCM检查服务状态,并提供一个简单的HTTP接口,以便轮询状态。这基本上只是一个大循环,如果服务状态发生变化,会有一些报告 while (true) { string servi

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


有没有一种常见的方法可以做到这一点?

您可以编写一个小的监控实用程序,通过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);
}

最简单的方法是让每个应用程序“呼叫总部”。创建一个单一的中央应用程序,最好是一个web应用程序,并让远程应用程序在您认为必要的任何时间间隔对中央应用程序进行一次小的调用。它们可以包括您想要监视的额外信息

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

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


我们在全球范围内使用数千台客户机来实现这一点,并且运行良好。

例如,您可以利用监视工具。

为了处理监视,我编写了一个rails应用程序并将其部署到heroku。这是愚蠢的简单,一直工作得很好;大约48小时……这是个好主意。我不会想到这个!