0

いくつかのスケジュールされたタスクについて、私は Windows サービスを開発し、サーバーで開始しました。しかし、これらのタスクは私たちにとって重要であり、トラブルシューティングが必要な場合はサービスを監視する必要があり、必要に応じて再起動またはアクションを実行する必要があります.

現在、サーバーまたはシステムの監視にArgusを使用しています。Argus の監視リストにサービスを追加したいと考えています。私の意見では、ping で十分ですが、サービスに ping 機能を追加する方法がわかりません。

ソケットを使用してポートを開く必要があると思います。しかしその後?エコー リクエストにどのように応答すればよいですか? 「ポン」または「OK」

4

2 に答える 2

1

コードプロジェクトの私の記事「ハートビートによるアプリケーションの監視」が役立つかもしれません。

ただし、必要に応じて、動作を少し変更する必要があります。サービスは、Argus から UDP (または好みの TCP) によって送信される要求を待機し、現在のステータス (「ハートビート」) を Argus に送信する必要があります。Argus は応答を期待されるものと比較し、ステータスが間違っていたり、何も受信されていない場合にアラームを送信します。

Ping (ICMP エコー) は、サーバーが利用可能 (IP 経由で到達可能) かどうかのみを確認します。

于 2013-11-12T09:41:26.273 に答える
0

ServiceController クラスを見てください

例:

using System.ServiceProcess;

ServiceController sc = new ServiceController(SERVICENAME);

switch (sc.Status)
{
    case ServiceControllerStatus.Running:
        return "Running";
    case ServiceControllerStatus.Stopped:
        return "Stopped";
    case ServiceControllerStatus.Paused:
        return "Paused";
    default:
        return "Status Changing";
}
于 2013-11-12T06:25:09.873 に答える