前回<バッチファイルでWindowsサービス監視2023年版 - treedown’s Report>いったん完成して動作させているサービス監視バッチですが、気になった機能をもう一つご報告です。
次回はこれを入れてみようかなと思いました。
別のコンピュータから監視
scコマンドはネットワーク経由で別のPCで稼働するサービス監視も可能です。コマンドオプションに「オプションの <サーバー> は "\\サーバー名" の形式です。」という表記があったのを確認しました。
ただし前提条件として以前に実施した「ネットワーク経由で別PCのコンピュータの管理を実行する<https://blog.treedown.net/entry/2023/11/30/010000>」が必要になります。
scコマンドのヘルプを一部抜粋して記載します。
--------------------------------------------------------------
C:\Users\testuser>sc /?
説明:
SC はサービス コントロール マネージャーやサービスと通信するために使用
するコマンド ライン プログラムです。
使用法:
sc <サーバー> [コマンド] [サービス名] <オプション 1> <オプション 2>...
オプションの <サーバー> は "\\サーバー名" の形式です。
「sc [コマンド]」と入力するとコマンドの詳細なヘルプが表示されます。
--------------------------------------------------------------
やってみる
サービスが起動しているサービス名と起動していないサービス名を指定して、状態の情報を収集してみます。
対象PCはクライアントHyper-Vが動作中なので、このサービスを対象にsc queryコマンドで状態を調査してみます。
この実行中の「Hyper-V Virtual Machine Management」サービス名は「vmms」と、
実行されていない「Hyper-V Time Synchronization Service」サービス名は「vmictimesync」
この二つを対象にsc queryコマンドを実行してみました。(※コンピュータ名は架空の"\\TCm92p-02"です。)
--------------------------------------------------------------
C:\Users\testuser>sc \\TCm92p-02 query vmms
SERVICE_NAME: vmms
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_PRESHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
C:\Users\testuser>sc \\TCm92p-02 query vmictimesync
SERVICE_NAME: vmictimesync
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
--------------------------------------------------------------
「STATE」に表記されるように、ネットワーク経由で別のPCを対象にしたscコマンドでも、サービスが実行状態である場合には「RUNNING」が表示されますし、サービスが停止状態のときは「STOPPED」で表示されることが分かります。
これを使うと…
使いドコロとしては、PC-AとPC-Bで相互にサービスを確認し、前回<バッチファイルでWindowsサービス監視2023年版 - treedown’s Report>のメールアラートを使って、OSレベルの問題が発生してサービスが応答しない状況でもアラートを送信することができる、と考えました。
いままでは、バッチの実行でサービス監視するコンピュータ1台で完結していたので、サービスの監視をしているコンピュータ自身(OSやハードウェアレベル)に問題が発生した場合にはアラートが発行されないケースもありました。(そもそも監視バッチを稼働させているタスクスケジューラはOSが起動していなければ動作しないため)
PC同士で相互にサービスを監視していれば、1台のOSレベルでの異常も相手のOSが正常動作していればアラートを送ることができます。ただ監視のために1台増やすというのもコストが必要になるということで、複数の常時起動Windowsがある場合には、という条件付きにはなりますがネットワーク経由で別PCのサービス監視をするというのは使えそうな感触は得ました。