40

特定のWindowsサービス(Windows Server 2003上)を監視し、必要に応じて再起動する方法を探しています。サービスは異なるサーバー上にあり、主にSQL Serverサービス(SQL Serverエージェントなど)が含まれますが、一部の独自のサービスも含まれます。

サービスが停止した場合に送信される電子メールアラートも非常に役立ちます。

4

6 に答える 6

45

これの「十分かもしれない」バージョンがWindowsに組み込まれています。を介して利用できるように、サービスプロパティの[回復]タブを調べますservices.msc

次の方法でサービスの失敗に対処できます。

  • 「サービスを再開する」
  • 「プログラムを実行する」
  • 「コンピュータを再起動する」

「プログラムの実行」は、たとえば、メールを送信する小さなスクリプトである可能性があります。

概要ダッシュボードなどを備えたより大きなソリューションが必要な場合は、利用可能なシステム監視ソリューションがたくさんあります。たとえば、SolarWinds IPMonitor、またはNagios、またはCactiが思い浮かびます。

于 2008-11-17T11:31:13.297 に答える
15

一部の.NETプログラミングに関心がある場合は、 System.ServiceProcess名前空間が、Windowsサービスアプリケーションの実装、インストール、および制御を可能にするクラスを提供します。

簡単な例、C#でサービスをチェックして開始する:

var srv = new ServiceController("MyService");
Console.WriteLine("MyService Status {0}", srv.Status);
if (srv.Status != ServiceControllerStatus.Running)
    srv.Start();
于 2008-11-17T11:55:41.390 に答える
6

それらはそこにあるいくつかの専用ツールかもしれませんが、私はただwmicツールを指摘したいと思います。

wmic /node:[hostname] service list

任意のコンピュータのサービスを一覧表示できます

WMIC SERVICE where caption='TELNET' CALL STARTSERVICE

telnetサービスを再起動します。

wmicをスクリプト言語(電子メールを送信できる)でカプセル化すると、探している監視ツールを使用できます。

于 2008-11-17T11:30:36.463 に答える
5

これは、監視する対象によって異なります。

  • Service Control Manager (SCM) に関する限り、サービスは実際に停止しています。
  • SCM が認識せずにサービスがクラッシュしました。これは、スレッド化が原因で非常に一般的です。
  • SCM が認識せずにサービスがハングアップしました。これも非常によくあることです。

最初の項目では、メール アラートを送信するスクリプトを開始するようにサービスを構成できます。サービスが制御できない状況 (不安定なネットワーク接続への依存など) によりサービスが再起動し続ける場合、これは非常に面倒なことになる可能性があることに注意してください。

他の 2 つの項目については、作成または購入できる何らかのタイプのハートビート サービスが必要です。少し前に書いたように、ネットワークは信頼できないため、監視しているサービスに対してローカルでハートビート モニターを実行するように注意してください。

于 2008-11-17T13:14:12.463 に答える
3

ManageEngine Free Windows Service Monitor を使用できます。これを使用して、リモート システムでサービスを開始/停止することができます。

http://www.manageengine.com/free-windows-service-monitor/free-windows-service-monitor-index.html

于 2011-12-22T09:53:01.080 に答える
1

ローカルマシンでサービスが監視されていることを確認するための+1。

Service Hawkのようなものは、サービスを監視し、停止して電子メールアラートを送信する必要がある場合はサービスを再開できます。別の投稿者が述べているように、SCMに関する限り、サービスが常に「停止」として表示されるとは限らないため、定期的な再起動のスケジュールを検討することもできます。そのような場合、サービスがハングしたり、フリーズしたり、その他の方法で混乱したりして、スケジュールに従ってサービスを時々再起動すると、サービスが正常に実行されます。記憶などを一掃し、新たなスタートを切るだけです。

于 2009-10-23T21:25:58.103 に答える