2013/08/26

[Windows]監視スクリプトを書いてみた(1/5) 処理フロー

はApacheやらMySQLのサービスが落ちてないかなどを監視するのを自分でチェックして異常があったら発報する仕組みが必要だと思ってました。
サードパーティに頼らず、WindowsOSの機能だけで作ってみたかったので、ほぼVBScriptだけでくみ上げてみました。

そんなマゾヒズム感全開なエントリがこちらです。

今回から5回にわたりコード含めて紹介したいと思います。
  1. 処理フロー(今回)
  2. メール送信
  3. サービス監視
  4. ポート監視
  5. MySQLレプリケーション監視



.

処理ルーチン

以下の処理を行うバッチファイルを作り、これをタスクスケジューラで5~10分ごとに実行するよう仕込みます。

バッチファイルの中身は以下の通りです。
システム障害がないかをチェックします。

システム障害がなければ「正常」としてログファイルにログを記録して終了です。

システム障害が検知されたら「障害発生」としてメールで発報します。
ログファイルにログを記録して終了します。


障害継続の場合の処理

ただ、これだけだと次回までに復旧できないと「システム障害を検視した」としてまたメールを(10分おきに)送信してしまいます。
またメールが来なくなったら障害が復旧したのかなと思うわけです。
これではちょっと頭悪そうなので工夫が必要だと思いました。

システム障害がないかをチェックします。

異常がなければ「正常」としてログファイルにログを記録して終了です。

異常があれば「障害発生」としてメールで発報します。
さらに障害が発生していることをローカルに記録するフラグファイルを生成します。
ログファイルにログを記録して終了します。


すでにフラグファイルがある場合は以下の動作になります。
システム障害がないかをチェックします。

異常がなければ「障害復旧」として、フラグファイルを削除し、復旧通知のメールを送信します。
ログファイルにログを記録して終了です。

異常があれば「障害継続」として、発報はせず、ログファイルにログを記録して終了です。



フローチャート

この処理をフローチャート風にするとこんな感じでしょうか。
(フラグファイル有無の確認と障害検知の順番をちょっと変えています。)

(Cacooのフローチャートのセットにはサブルーチンのステンシルがないのね。)

なお、このシリーズではすべてローカルのサービスやポートなどを監視する前提です。
リモートの監視については工夫すればできるものもありますが、今回は触れません。


次回はメールをVBScriptで送信してみます。

.

0 件のコメント:

コメントを投稿