このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
03_windows:04_monitoring:check_software_raid [2014/08/06 06:31] – 03_windows:04_監視:check_software_raid renamed to 03_windows:04_monitoring:check_software_raid matsui | 03_windows:04_monitoring:check_software_raid [2016/01/13 06:00] (現在) – matsui | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== ソフトウェアRaid監視(Windows) ====== | ||
+ | Windowsでの SoftRaid の自動監視の方法 | ||
+ | |||
+ | - diskpart コマンドで、RAID の状況を標準出力に出力 | ||
+ | - この出力から RAID の異常を発見するためボリューム毎の「正常」の文字を数える | ||
+ | - 数えた結果が0だったらメールを送信する。 | ||
+ | - これらの結果をバッチファイルにし、at コマンドでスケジューリングして定期的に自動実行する。 | ||
+ | |||
+ | バッチファイルの中味はこんな感じ。 | ||
+ | |||
+ | <code console> | ||
+ | diskpart /s c: | ||
+ | </ | ||
+ | |||
+ | 途中で改行が入ってしまっていますが、これを1行で書きます。\\ | ||
+ | 事前に、これらのコマンドやテキストファイルが置かれているディレクトリに移動しておきます。 | ||
+ | |||
+ | ===== diskpart コマンドで、RAID の状況を標準出力に出力 ===== | ||
+ | 「 diskpart /s c: | ||
+ | |||
+ | diskpart は、実行時に / | ||
+ | diskpart_cmd.txt には | ||
+ | < | ||
+ | list volume | ||
+ | </ | ||
+ | と1行だけ書かれています。 | ||
+ | |||
+ | ===== ボリューム毎の「正常」の文字を数える ===== | ||
+ | < | ||
+ | 「 findstr /r / | ||
+ | </ | ||
+ | |||
+ | ここで、 findstr の / | ||
+ | 空白のある文字を指定する場合は、このオプションが必要です。\\ | ||
+ | " | ||
+ | これらによって、監視したいボリュームの正常の文字をが書かれている行を抽出します。 | ||
+ | |||
+ | < | ||
+ | 「 cscript //Nologo c: | ||
+ | </ | ||
+ | |||
+ | cscript は、WSH コマンドをバッチファイルで扱うための処理です。 | ||
+ | |||
+ | ===== メールを送信 ===== | ||
+ | found_mail.vbs はこんな感じ | ||
+ | |||
+ | <code console> | ||
+ | const host = " | ||
+ | const mailto = " | ||
+ | mailfrom = " | ||
+ | |||
+ | ' | ||
+ | Dim in_no | ||
+ | Dim WSHShell | ||
+ | ' | ||
+ | in_no=0 | ||
+ | Do Until WScript.StdIn.AtEndOfLine | ||
+ | strInput = WScript.StdIn.ReadLine | ||
+ | WScript.Echo strInput | ||
+ | in_no=in_no+1 | ||
+ | LOOP | ||
+ | ' | ||
+ | |||
+ | IF in_no > 0 then | ||
+ | ' | ||
+ | WScript.Echo "Good Soft RAID" | ||
+ | Else | ||
+ | ' | ||
+ | WScript.Echo " | ||
+ | |||
+ | ' | ||
+ | ' | ||
+ | Const cdoSendUsingMethod = _ | ||
+ | " | ||
+ | Const cdoSendUsingPort = 2 | ||
+ | Const cdoSMTPServer = _ | ||
+ | " | ||
+ | Const cdoSMTPServerPort = _ | ||
+ | " | ||
+ | Const cdoSMTPConnectionTimeout = _ | ||
+ | " | ||
+ | Const cdoSMTPAuthenticate = _ | ||
+ | " | ||
+ | Const cdoBasic = 1 | ||
+ | Const cdoSendUserName = _ | ||
+ | " | ||
+ | Const cdoSendPassword = _ | ||
+ | " | ||
+ | |||
+ | ' | ||
+ | Const booster = " | ||
+ | |||
+ | Dim objConfig, Fields, objMessage | ||
+ | |||
+ | |||
+ | ' | ||
+ | Set objConfig = CreateObject(" | ||
+ | Set Fields = objConfig.Fields | ||
+ | |||
+ | With Fields | ||
+ | .Item(cdoSendUsingMethod) = cdoSendUsingPort | ||
+ | .Item(cdoSMTPServer) = booster | ||
+ | .Item(cdoSMTPServerPort) = 25 | ||
+ | .Item(cdoSMTPConnectionTimeout) = 10 | ||
+ | ' | ||
+ | .Item(cdoSMTPAuthenticate) = cdoAnonymous | ||
+ | .Item(cdoSendUserName) = "" | ||
+ | .Item(cdoSendPassword) = "" | ||
+ | .Update | ||
+ | End With | ||
+ | |||
+ | Set objMessage = CreateObject(" | ||
+ | Set objMessage.Configuration = objConfig | ||
+ | |||
+ | With objMessage | ||
+ | .To = mailto | ||
+ | .From = mailfrom | ||
+ | .Subject ="[ Error] Soft raid の異常: " & host | ||
+ | .TextBody ="Soft RAIDに異常を発見しました。" | ||
+ | .Send | ||
+ | End With | ||
+ | |||
+ | End If | ||
+ | ' | ||
+ | </ | ||
+ | 最初の所で、標準入力からの行数を数えます。\\ | ||
+ | 「 findstr /r / | ||
+ | 1行も無ければ、これは異常ですので、メールを送信します。\\ | ||
+ | 「' | ||
+ | |||
+ | {{tag> |