Visual Studio .NETとC#を使用してWindowsサービスアプリケーションを構築しました。このサービスは数百台のマシンに導入され、アプリケーションの監視方法を探しています。モニタでは、実行していることを確認し、各クライアントのいくつかの設定のステータスを確認するだけです。カスタムWindowsサービスの監視
一般的な方法はありますか?
Visual Studio .NETとC#を使用してWindowsサービスアプリケーションを構築しました。このサービスは数百台のマシンに導入され、アプリケーションの監視方法を探しています。モニタでは、実行していることを確認し、各クライアントのいくつかの設定のステータスを確認するだけです。カスタムWindowsサービスの監視
一般的な方法はありますか?
最も簡単なことは、各アプリケーションに「コールホーム」を持たせることです。単一の中央アプリケーション、好ましくはWebアプリケーションを作成し、必要と思われる間隔で遠隔アプリケーションに中央アプリケーションへの小さな呼び出しをさせるようにします。監視する追加情報を含めることができます。
アプリケーションがどこに配置されているかのリストを保持し、予定された時間枠内でリストのいずれかから電話がかかっていない場合は、それがオフラインであることがわかります。
監視している実際のアプリケーションを変更できない場合は、スケジュールされたタスクとして実行できる小さなコンパニオンアプリケーションを作成し、同じローカルチェックを実行して中央アプリケーションにコールバックします。
世界中の何千ものクライアントマシンでこれを行い、うまくいきます。
これは素晴らしい考えです。私はこれを考えなかったでしょう! – devlord
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);
}
監視を処理するために、私はレールアプリケーションを作成し、それをherokuにデプロイしました。それは簡単で愚かで、素晴らしい仕事をしています。とにかく約48時間。 –