SAS(Server Activity Sonar)

仕事や趣味でサーバを運用していると、サーバが常時稼働しているかどうかを定期的にチェックする仕組みは必須となります。
現在は有料、無料のさまざまなサービスやソフトが存在しますが、個人的には自分の欲しいレベルの機能をもった監視ツールが無い(高級ルータやソフトが無いのでSNMPベースの監視は無理とか、手元にWindowsしかないので他OSのツールへの敷居が高い、など)というのが正直な印象。
プロ向けのツールは詳細な解析もできてスゴイけど、本当に自分が必要としている機能なのかどうなのか。無料の監視サービスを利用しているけど、欲しい機能を自分で盛り込むわけにも行かないので正直我慢・妥協して使っている、等々。
私が必要とする監視機能は以下の通り。

  • Windowsベースで稼働すること。
  • 個人規模やSOHO規模での運用がメイン。またADSLなどの非常時接続(不安定)な環境での運用を前提とする。
  • 複数のホストを監視できること。
  • 複数のポートを監視できること。
  • 単に応答の有無だけでなく、実際のレスポンス(通信遅延)も監視条件に含めること。
  • 設定、運用、画面、説明が分かりやすいこと。
  • 状況変化時に携帯メール等を送信できること。
  • マクロやツールなどでログを加工しなくても、画面上で過去履歴や各種実績が確認できること。

これらの一方的で勝手な要望を、ツールとしてまとめてみたらこんな感じに。

プログラム名:SAS(Server activity sonar)
目的:指定されたサーバ群の死活監視・アラーム発信を行う
ターゲット:個人、SOHO等の小規模なサーバ管理


監視項目
●グローバル
・PING 特定アドレスへのping応答有無による監視側インフラ死活判定
      プロバイダ内ゲートウェイDNSサーバ、大手サイト(www.yahoo.co.jp等)を推奨
●ホスト別
・PING ping応答有無による死活判定
      応答時間(ms)によるレスポンス監視
・HTTP ポート接続可否による死活判定
      応答時間(ms)によるレスポンス監視
・FTP  ポート接続可否による死活判定
      応答時間(ms)によるレスポンス監視
・POP  ポート接続可否による死活判定
      応答時間(ms)によるレスポンス監視
・SMTP ポート接続可否による死活判定
      応答時間(ms)によるレスポンス監視
・カスタム ポート接続可否による死活判定(最大5ポート)
      応答時間(ms)によるレスポンス監視

※グローバルpingについて
 監視する側のインフラ(回線や機器)が正常かどうかを確認する(ping応答が有るか無いか)。
 これがダウンしている場合は以降の監視処理は行わない(欠測扱い)。
 監視側インフラ障害の報告はメール以外(画面・ログ・タスク)で実行。
 監視側インフラ復帰時はメールを含む報告が実行される。
 グローバルダウン中の定期連絡メールは、グローバル復帰時にまとめて送信される。

※判定の反転
 通常は「応答有り=正常、応答無し=異常」だが、これを反転させて
 「応答無し=正常、応答有り=異常」とするオプション。
 使用禁止ポートや停止サーバの活性化を検知するなど、特殊な用途向け。
 反転モードの場合はレスポンス監視は無効。

※レスポンス監視
 項目毎に閾値(ms)を指定可能。普段の応答遅延から任意で指定。
 0とするとレスポンス監視が無効(レスポンスが悪くても応答すれば良し)となる。
 デフォルトは0(無効)。


監視頻度
・監視間隔	最低1分、最高24時間、指定単位は1分

※全監視項目共通。
 項目毎に倍率を設定可能(倍率2の場合、その項目は2回に1回しか監視されない)。
※監視処理が次の監視サイクルに間に合わなかった場合、その監視はキャンセルされる。


判定構造
・待機、欠測  白:監視処理未実施、もしくは監視を一時停止中の場合
・正常     緑:応答があり、レスポンスも閾値未満の場合
・注意     黄:応答があり、レスポンスが閾値以上の場合(レスポンス低下)
・異常     黒:応答がなくなった場合
・障害     赤:異常状態が3回以上継続している場合


報告処理
・ログ    ログへの記録(状態変化や各種報告処理等、全てのイベント)
       変数(%y%m%d%h%n)によるファイルローテーションが可能
・画面    監視PCデスクトップ上にポップアップ表示(正常復帰時は自動で閉じる)
・サウンド  監視PC上で音声ファイルを再生(状況変化時のみ)
・メール   指定メールアドレスへの連絡メール送信(下記2つをそれぞれON/OFF可)
       ・状態変化時 判定別に宛先と文面を指定可能
       ・定期連絡  状態変化が無くても現在の状態を指定間隔(毎時指定可)で報告
・タスク起動 指定されたコマンドラインを実行(判定構造別に内容を指定可能)


画面表示
・状態表示  現在の状態、状態変化のタイムスタンプ、現状の継続時間、
       レスポンスの最新値、最大値、平均値、最小値
・経過表示  横軸が時間、縦軸が監視項目のマトリクスに判定色のブロックを表示
       経過記憶領域は最大525600ステップ(525600分=1年)
		
・実績集計  下記項目を数値で表示
       ・各判定毎の累積時間
       ・各判定毎の最大継続時間
       ・正常時間に対する注意、異常、障害の比率
・動作設定  ホストリスト・監視項目リストの表示・設定・追加・削除
       監視通信中以外であれば随時変更可能


運転オプション
・ログイン時に自動起動
・起動時に最小化
・最小化時タスク非表示(システムトレイアイコンのみ)


内部構造イメージメモ
・ホストリストと監視項目リストの2層配列
・経過記憶領域は各監視項目毎に525600ステップ保持
・報告処理は別スレッドで非同期実施
・監視処理はホスト毎にスレッド化する

DiskLEDの設計も進めてますが、本業の関係や個人的優先度の関係でSASとDiskLED、はたまたMoE関係ツール群のどれを優先すべきか悩むところでもあります・・・。