サービスが起動していなかったら起動を試みる監視用のVBスクリプト

Windows Server 2003のサービスで、頻繁に落ちているモノがあったので集中的に監視可能な、サービスが起動していなかったら起動を試みる監視スクリプトを作ってみました。
もしかすると使い道あまりないかも知れませんが、使い道あったらどうぞ。

使い方

適当なBATファイルを作成して、そこから引数にPC名 サービス名を指定して実行するだけです。
自動復旧出来ないサービスがあるとイベントログに書き込みます。重要度に応じてメール送信出来るようにすると良いと思います。その場合には適当に書き換えて使ってください。

intTIMEOUT = 5

という値でサービスの最大応答時間を決められます。スクリプト中には5(5秒)とありますが、サービスに応じて時間も調整してください。

’サービスを監視し、起動していなかったら起動してみる監視スクリプト
‘使用例
‘ “Cscript C:\Scripts\Win32サービス稼働確認.vbs” “PC名” “サービス名”

Option Explicit

Dim objArgs,objWMIService,objItem,colItems
Dim strComputer,strService
Dim intTIMEOUT,i
Dim strSERVICE_LOG

Set objArgs = wscript.Arguments
strComputer = objArgs.item(0)
strService = objArgs.item(1)

‘————————————
‘サービスが開始されるまでの最大待ち時間
intTIMEOUT = 5
‘————————————

‘カウンター初期化
i = 0

Call QUERY_SERVICE()

Sub QUERY_SERVICE()
Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)
Set colItems = objWMIService.ExecQuery(“Select * from Win32_Service”,,48)

For Each objItem in colItems
If objItem.DisplayName = strService Then
‘デバック用
‘Wscript.Echo objItem.DisplayName & ” is ” & objItem.State

‘objItem.StateがRunning以外だったらサービスを実行し、サービスの起動を待つ。
If objItem.State > “Running” Then
i = i + 1
‘サービスの起動を試みる。
If i intTIMEOUT Then
‘サービス起動
objItem.StartService(objItem.DisplayName)
‘1秒待機
Wscript.Sleep 1000
‘QUERY_SERVICEを呼び出し
Call QUERY_SERVICE()
Else
strSERVICE_LOG = “PC名:” & strComputer & vbCrLf &_
strService & “が停止していたので自動復旧を試みましたが” &_
intTIMEOUT & “秒以内に起動確認出来ませんでした。” &_
“サービスが停止している可能性があります。”
Wscript.Echo strSERVICE_LOG
‘イベントログ書き込み
CALL WriteEvent(1,strSERVICE_LOG)
End If
End If
End If
Next
End Sub

‘イベントログに書き込み(WriteEvent(番号,ログ本文))
Sub WriteEvent(int,strLOG)
Dim objShell
Set objShell = Wscript.CreateObject(“Wscript.Shell”)
objShell.LogEvent int,strLOG
Set objShell = Nothing
End Sub

4 COMMENTS

pnpk

oikawa4040さん

こんばんは、コメントありがとうございます。
追加でいくつか情報をいただければ、お手伝いする事が出来るかも知れません。

取り急ぎ以下の項目について、教えてもらうことは可能ですか。

・今回の目的
・行き詰った箇所はどこだったでしょうか
・対象サービスが稼働しているOS
・対象サービス名
・対象を監視する予定のOS(監視対象自体で稼働させる場合は必要無いです)

よろしくお願いします。

oikawa4040

こんにちわ

利用したいのでがどこを変えたらいいのでしょうか?
初心者ですみません
よろしくお願いします。

pnpk

こんばんは。
コメントありがとうございます。

WEBサイトを閲覧される方の利便性を考慮しての転載については一切の制約は設けておりません。
ですので、気に行っていただけたのであればご自由に転載たいだいて結構です。

よろしくお願いいたします。

ishida330

こんにちわ。サービスの停止・開始を行うスクリプトを探していてこのページにたどり着きました。
これは僕の求めているものにとても近いです。
コピペして要件に合わせて改造を加えたものを別のWikiに掲載させていただきたいのですが、よろしいでしょうか?
もちろん、出典と謝辞は明記させていただきます。メールにてご連絡いただけたらありがたく存じます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です