Windowsマシンが正常に動作しているかを監視する場合、いろいろな監視方法がありますが、その一つにSNMPで監視する方法があります。
そこでここでは、SNMPの概要やWindowsマシンをSNMPで監視するための基本的な設定方法を紹介します。
目次
SNMPとは
SNMP(Simple Network Management Protocol)は、ネットワーク上の機器を監視、管理するためのアプリケーション層プロトコルで、おもに、ルーター、スイッチなどのネットワーク機器の状態監視、リソース監視、パフォーマンス監視、トラフィック監視を行うために使用します。
たとえば、ネットワーク機器の各ポート上で送受信されたパケット数、ポートの状態(up/down)、CPU使用率、メモリ使用率などを監視することがきます。
もちろん、サーバーなどの機器を監視する場合に利用されることもあります。
SNMP監視の仕組み
SNMPでは、監視する側を「SNMPマネージャー」、監視される側を「SNMPエージェント」と呼び、マネージャーとエージェントがやり取りを行うことで、監視や管理を行います。
SNMPマネージャー機能は、メジャーな監視ツールなら標準搭載されていることが多く、フリーの監視ツールに搭載されている場合もあります。
SNMPエージェント機能は、ネットワーク機器やサーバー機器では、標準機能として搭載されていることが多く、OSの機能やソフトウェアとして提供されている場合もあります。
SNMPでの監視方法には、2通りあります。
- SNMPマネージャーからSNMPエージェントへのポーリングによる情報取得
- SNMPエージェントからSNMPマネージャへのトラップ/インフォーム通知
ポーリングによる情報取得
ポーリングは、SNMPマネージャーからSNMPエージェントへの通信で、機器の情報を取得して監視します。
トラップ・インフォームによる通知
トラップ・インフォームは、ポーリングとは逆にSNMPエージェントからSNMPマネージャーへの通信で、SNMPエージェント側の機器に障害が発生したときなどの通知で利用されます。
通信プロトコル
SNMPでは、通信プロトコルとして「UDP」を使用します。
理由としては、UDPはTCPに比べて一度にやり取りするデータ量が小さいことと、処理にかかる負荷が軽いことが挙げられます。これにより、SNMPマネージャーでたくさんの機器を監視しても掛かる負荷を軽くすることができます。
また、UDPの信頼性の低さを補うために、SNMPでは信頼性を確保する仕組みも搭載されています。
使用するポートは、ポーリングの場合は、SNMPマネージャーからSNMPエージェントのUDP161番ポート宛に通信が行われ、トラップの場合は、SNMPエージェントからSNMPマネージャーのUDP162番ポート宛に通信が行われます。
MIB
MIB(Management Information Base)とは、機器のさまざまな情報が記録されているデータの集合体で、OID(オブジェクトID)と呼ばれる一意の識別子により、どこにどのような情報が含まれているかが定義されています。
OIDは、階層構造になっており、各階層の項目名あるいは対応する番号をIPアドレスのように最上位から順に「.」で区切って表記します。例えば、CPU使用率の情報を番号表記で表すと「1.3.6.1.2.1.25.3.3.1.2」となります。
SNMPでは、ポーリング時にはSNMPマネージャがOIDを指定して、SNMPエージェントから情報を取得しています。
また、MIBには、すべての機器で共通で利用できる標準化された「標準MIB(MIB-2)」と呼ばれるものと、ベンダー独自の情報を記録する「拡張MIB(ベンダーMIB)」という2種類のMIBがあります。
標準MIBは、OIDが「1.3.6.1.2.1」から始まり、CPU利用率やホスト名、トラフィック量など、汎用的な情報が記録されており、拡張MIBは、OIDが「1.3.6.1.4.1」から始まり、各ベンダー独自の情報が記録されています。
SNMPコミュニティ
SNMPでは、SNMPマネージャーとSNMPエージェントの組み合わせを「SNMPコミュニティ」と呼び、SNMPマネージャーとSNMPエージェントの間で通信を行うには、同じコミュニティ名を指定する必要があり、パスワードと同じような意味合いを持っています。
また、コミュニティ名でアクセスモードを指定することができます。
通常の監視では、MIB情報を読み取るだけなので、読み出し専用モード(よく使われるコミュニティ名は「public」)が使われ、MIB情報を変更するような場合は、読み書きが可能なモード(よく使われるコミュニティ名は「private」)が利用されます。
読み書き可能なモードを利用すると、ネットワーク機器のインターフェースをDownさせたり、機器を再起動するといった、機器の設定変更や操作が可能になります。
WindowsをSNMPで監視するための設定
SNMPエージェントのインストール
WindowsをSNMPで監視するためには、SNMPエージェント機能をインストールします。(以降の画面は、Windows 10での画面です。)
まず、Windowsの「設定」から「アプリ」を選択します。
「アプリ」画面が表示されるので「アプリと機能」にある「オプション機能」 をクリックします。
「オプション機能」画面が表示されるので「機能の追加」をクリックします。
「オプション機能を追加する」画面が表示されるので、一覧から「簡易ネットワーク管理プロトコル (SNMP)」にチェックを入れて「インストール」をクリックします。
以上で、SNMPエージェント機能がインストールされます。
Windows 10のSNMPエージェント機能は、v1とv2cに対応していますが、v3には対応していません。(SNMPトラップはv1で送信されます。)
SNMPエージェントの設定
SNMPエージェント機能をインストールしたら、つぎにSNMPエージェントの設定を行います。
スタートメニューのプログラム一覧から「Windows管理ツール」>「サービス」をクリックします。
「サービス」画面が表示されるので、サービス一覧から「SNMPサービス」をダブルクリックします。
「SNMPサービス」のプロパティ画面が表示されるので「セキュリティ」タブで「受け付けるコミュニティ名」の「追加」をクリックし、コミュニティ名とコミュニティの権利を設定します。
ここでは例として、コミュニティ名に「public」を追加し、コミュニティの権利は「読み取りのみ」に設定しています。
つぎに「すべてのホストからSNMPパケットを受け付ける」または「これらのホストからSNMPパケットを受け付ける」を選択します。
SNMPパケットを特定のホストからしか受け付けたくないときは「これらのホストからSNMPパケットを受け付ける」を選択し「追加」をクリックして、SNMPマネージャのホスト名やIPアドレスを指定します。
設定が完了したら「OK」をクリックします。
設定が済んだら、設定内容を反映させるために「サービス」画面で「SNMPサービス」を再起動します。
以上で、SNMPエージェントの設定完了です。
SNMPトラップを設定するときは
SNMPトラップを設定するときは、同じ「SNMPサービス」のプロパティ画面で「トラップ」タブを選択し、コミュニティ名を入力してから「一覧に追加」をクリックします。
ここでは例として、コミュニティ名に「public」を追加しています。
つぎに「トラップ送信先」で「追加」をクリックし、トラップ送信先のSNMPマネージャのホスト名やIPアドレスを追加します。
ここでは例として、トラップ送信先としてIPアドレスで「192.168.10.100」を追加しています。
設定が完了したら「OK」をクリックします。
ファイアウォール設定の確認
通常は、SNMPエージェント機能をインストールすると「Windows Defender ファイアウォール」の設定に、受信の規則が自動的に追加されて通信できるようになりますが、ファイアウォール機能を搭載したサードパーティーのセキュリティ対策ソフトをインストールしている環境では、UDP161番ポートの受信を許可する必要があります。
SNMPの動作確認
SNMPエージェントの設定が済んだら、動作確認として以下の2点を確認します。
- SNMPマネージャーからSNMPエージェントの情報を取得できるか
- SNMPトラップを送信でき、SNMPマネージャーで受信できるか
ここでは、別のWindows 10マシン(IPアドレス:192.168.10.100)に、SNMPマネージャーとして「Net-SNMP」をインストールして動作確認を行います。
「Net-SNMP」は、SNMPエージェント機能やSNMPコマンドの発行、トラップの送受信ができる無料のコマンドラインツールです。
SNMPエージェントの情報を取得する
SNMPマネージャーでSNMPエージェントの情報を取得できるか確認するには、動作確認用マシンでコマンドプロンプトを起動して以下のコマンドを実行します。
c:\usr\bin> snmpwalk -v 2c -c public 192.168.xxx.xxx .1.3.6.1.2.1.25.3.3.1.2
コマンドの192.168.xxx.xxx の部分には、SNMPエージェントを設定をしたマシンのIPアドレスを指定し「-c」オプションには設定したコミュニティ名を指定し、末尾にOID(取得したい情報)を指定します。
上のコマンドではOIDとして論理CPUの使用率を指定しており、SNMPエージェントから情報が取得できていれば、以下のように論理CPUごとの使用率が表示されます。
SNMPトラップを送信しSNMPマネージャーで受信する
SNMPトラップを送信でき、SNMPマネージャーで受信できるかを確認するときは、SNMPエージェント設定を行ったマシンで、「evntwin」ツールを使い特定のイベントログが発生したときに、SNMPトラップを発報するよう設定します。
手順は、次のとおりです。
SNMPエージェントを設定したマシンで、管理者権限でコマンドプロンプトを起動して、以下のコマンドを実行し、テスト用のイベントを発生させておきます。
> EVENTCREATE /ID 999 /L system /SO test /T ERROR /D "This is Test Event."
コマンド実行後「成功:・・・」と表示されていればOKです。
次に、以下のコマンドを実行して「イベントトラップトランスレーター」を起動します。
> evntwin
「イベントトラップトランスレーター」が起動したら、構成の種類で「カスタム」を選択してから「編集」をクリックします。
画面下部にイベントソースとイベントIDを選択する画面が表示されるので、SNMPトラップを発報したいイベントログを選択して「追加」をクリックします。
ここでは例として、先ほど発生させたテストイベント(イベントソースが「test」でイベントIDが「999」)のイベントログを指定しています。
「プロパティ」画面が表示されるので、そのまま「OK」をクリックします。
「トラップに変換するイベント」の一覧に、追加したイベントが表示されていることを確認したら「OK」をクリックして画面を閉じます。
設定を適用するために「サービス」画面で「SNMPサービス」を再起動します。
ここまでの設定ができたら、あらためて管理者権限で「コマンドプロンプト」を起動して、以下のコマンドでテストイベントを発生させ、動作確認用マシンでトラップを受信できているかを確認します。
> EVENTCREATE /ID 999 /L system /SO test /T ERROR /D "This is Test Event."
ちなみに、Net-SNMPでは、トラップを受信するとsnmptrapd.logに、次のようなログが出力されます。
なお、Net-SNMPでSNMPトラップを受信するには事前設定が必要で、設定方法は以下のサイトが分かりやすいでしょう。
あとがき
ここでは、WindowsマシンをSNMPで監視するための基本的な設定方法を紹介しましたが、Windowsの標準機能だけだと、SNMPで取得できる情報はそれほど多くありません。
WindowsマシンをSNMPでしっかりと監視したいなら、エージェントソフトウェアを備えた監視ツールを利用したり、「SNMP Informant」といったサードパーティーのツールを導入して、取得できる情報を拡張する必要があるでしょう。