特定のWindowsサービス(Windows Server 2003上)を監視し、必要に応じて再起動する方法を探しています。サービスは異なるサーバー上にあり、主にSQL Serverサービス(SQL Serverエージェントなど)が含まれますが、一部の独自のサービスも含まれます。
サービスが停止した場合に送信される電子メールアラートも非常に役立ちます。
特定のWindowsサービス(Windows Server 2003上)を監視し、必要に応じて再起動する方法を探しています。サービスは異なるサーバー上にあり、主にSQL Serverサービス(SQL Serverエージェントなど)が含まれますが、一部の独自のサービスも含まれます。
サービスが停止した場合に送信される電子メールアラートも非常に役立ちます。
これの「十分かもしれない」バージョンがWindowsに組み込まれています。を介して利用できるように、サービスプロパティの[回復]タブを調べますservices.msc
。
次の方法でサービスの失敗に対処できます。
「プログラムの実行」は、たとえば、メールを送信する小さなスクリプトである可能性があります。
概要ダッシュボードなどを備えたより大きなソリューションが必要な場合は、利用可能なシステム監視ソリューションがたくさんあります。たとえば、SolarWinds IPMonitor、またはNagios、またはCactiが思い浮かびます。
一部の.NETプログラミングに関心がある場合は、 System.ServiceProcess名前空間が、Windowsサービスアプリケーションの実装、インストール、および制御を可能にするクラスを提供します。
簡単な例、C#でサービスをチェックして開始する:
var srv = new ServiceController("MyService");
Console.WriteLine("MyService Status {0}", srv.Status);
if (srv.Status != ServiceControllerStatus.Running)
srv.Start();
それらはそこにあるいくつかの専用ツールかもしれませんが、私はただwmicツールを指摘したいと思います。
wmic /node:[hostname] service list
任意のコンピュータのサービスを一覧表示できます
WMIC SERVICE where caption='TELNET' CALL STARTSERVICE
telnetサービスを再起動します。
wmicをスクリプト言語(電子メールを送信できる)でカプセル化すると、探している監視ツールを使用できます。
これは、監視する対象によって異なります。
最初の項目では、メール アラートを送信するスクリプトを開始するようにサービスを構成できます。サービスが制御できない状況 (不安定なネットワーク接続への依存など) によりサービスが再起動し続ける場合、これは非常に面倒なことになる可能性があることに注意してください。
他の 2 つの項目については、作成または購入できる何らかのタイプのハートビート サービスが必要です。少し前に書いたように、ネットワークは信頼できないため、監視しているサービスに対してローカルでハートビート モニターを実行するように注意してください。
ManageEngine Free Windows Service Monitor を使用できます。これを使用して、リモート システムでサービスを開始/停止することができます。
http://www.manageengine.com/free-windows-service-monitor/free-windows-service-monitor-index.html
ローカルマシンでサービスが監視されていることを確認するための+1。
Service Hawkのようなものは、サービスを監視し、停止して電子メールアラートを送信する必要がある場合はサービスを再開できます。別の投稿者が述べているように、SCMに関する限り、サービスが常に「停止」として表示されるとは限らないため、定期的な再起動のスケジュールを検討することもできます。そのような場合、サービスがハングしたり、フリーズしたり、その他の方法で混乱したりして、スケジュールに従ってサービスを時々再起動すると、サービスが正常に実行されます。記憶などを一掃し、新たなスタートを切るだけです。