2010-12-20 85 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); 
}