この記事では、ネットワーク監視ソフトウェア「PRTG Network Monitor」(以下、PRTG)で、プライベートMIB(ベンダーMIB)を利用してSNMP監視を行う方法を解説します。
例としてヤマハ株式会社のL2スイッチ「SWX2310」のMIBファイルを使用しますが、基本的な手順は他ベンダーのMIBファイルでも同様です。
文:ジュピターテクノロジー やすだ
※本記事に掲載されている商品名・サービス名などは、各社の商標または登録商標です。
PRTGのセンサーとプライベートMIB
PRTGのセンサー(監視テンプレート)
PRTGはセンサー(監視テンプレート)を用いて監視を行います。あらかじめ多数のセンサーが用意されており、対象機器に適したセンサーを追加するだけで監視を開始できます。
例えば、Cisco機器では以下のようなセンサーが利用できます。
- SNMP トラフィックセンサー:ポートごとのトラフィック量を監視
- SNMP システムアップタイムセンサー:機器の連続稼働時間を監視
- SNMP Cisco システムの正常性センサー:CPU、メモリ、電源、温度などを監視
このうち前者2つは標準MIBを利用したセンサーで、ほぼすべてのベンダーのSNMP対応機器を監視できます。
一方、後者はCiscoのプライベートMIBを利用したCisco機器専用のセンサーです。
このように、プライベートMIBを利用する監視項目でも、PRTGに専用センサーが用意されている場合は、そのセンサーを利用できます。
プライベートMIBからカスタムセンサーを作成できる
ただし、すべてのベンダー向けに専用センサーが用意されているわけではありません。
そのような場合でも、ベンダーが提供するMIBファイルがあれば、カスタムセンサーを作成して監視できます。
今回はヤマハのL2スイッチ「SWX2310」のMIBファイルを例に、カスタムセンサーを作成する手順を紹介します。
本記事の手順は、他のベンダーが提供するMIBファイルでもほぼ同様に利用できます。
MIBファイルからカスタムセンサーを作成
PRTGでは、プライベートMIBを監視するカスタムセンサーを作成する方法がいくつかありますが、ここではMIBファイルをインポートして作成する方法を紹介します。
インポートすることで、MIBファイル内のOIDやルックアップ定義をPRTGで利用できるようになります。
MIBファイルの入手
最初に、ベンダーからMIBファイルを入手します。ヤマハのプライベートMIBはヤマハのウェブサイトから入手できます。
ベンダーによって入手方法は異なります。各ベンダーにお問合せください。
プライベートMIBの内容を確認
プライベートMIBの内容を確認し、監視したい項目のMIB名やOIDを確認します。
ここでは、メモリ使用率、CPU使用率、ループ検出を例に説明します。
ヤマハSWX2310はMIBリファレンスが用意されており、ヤマハのウェブサイトからサポートするMIBを確認できます。
例えば、メモリ、CPUの各使用率は次のMIBとOIDで監視できます。
yamahaSWHardwareグループ
・yshMemoryUtil 1.3.6.1.4.1.1182.3.1.4 R/O Gauge (0..100) メモリ使用率
・yshCpuUtil5sec 1.3.6.1.4.1.1182.3.1.5 R/O Gauge (0..100) CPU使用率(5秒間平均)
・yshCpuUtil1min 1.3.6.1.4.1.1182.3.1.6 R/O Gauge (0..100) CPU使用率(1分間平均)
・yshCpuUtil5min 1.3.6.1.4.1.1182.3.1.7 R/O Gauge (0..100) CPU使用率(5分間平均)
また、ヤマハ独自のループ検出機能について、次のMIB・OIDと値の定義で監視できます。
yamahaSWLoopDetectグループ
ysldPortTable 1.3.6.1.4.1.1182.3.11.8 N/A 各ポートのループ検出情報のテーブル
ysldPortStatus 1.3.6.1.4.1.1182.3.11.8.1.4 R/O INTEGER ループ検出の状態
・disabled(1) : ループ検出機能が無効
・normal(2) : ループを検出していない
・detected(3) : ループを検出している
・blocked(4) : ループを検出し、ポートがBlocking状態になっている
・shutdown(5) : ループを検出し、ポートがShutdown状態になっている
監視したいMIBやOIDが確認できたら、次はMIBファイルをPRTGで利用できる形式に変換します。
「Paessler MIB Importer」でMIBファイルをインポート
MIBファイルをインポートするために、PRTG開発元のフリーツール「Paessler MIB Importer」を使用します。
「Paessler MIB Importer」で、MIBファイルをPRTGで利用できる「.oidlib」形式へ変換します。
「Paessler MIB Importer」はMIBファイルのビューワーとしても利用できます。
「Paessler MIB Importer」のダウンロードとインストール
Paesslerのウェブサイトからインストーラーをダウンロードできます。ダウンロードしてインストールしてください。
インストール先は、PRTG がインストールされたPCでも、他のPCでも構いません。
MIBファイルを読み込む
「Paessler MIB Importer」を起動し、MIBファイルを読み込みます。
「File」メニューの「Import MIB File…」からMIBファイルを選択、または、MIBファイルをドラッグ&ドロップします。
※複数のファイルを一度に読み込むことができます。


読み込みが完了すると、「Import Log」ダイアログが開き、PRTGで利用できるOIDの数が表示されます。
ポーリングで監視できるOIDのみを読み込むため、SNMP TrapのOIDは読み込まれません。
「Close」でダイアログを閉じます。

読み込めない場合
MIBファイルによっては、「Error: Missing import module: <ファイル名>」のメッセージが表示され、読み込みに失敗する場合があります。
これは、対象のMIBファイルが依存している別のMIBファイルが見つからない場合に発生します。
その場合は、エラーメッセージに表示されているMIBファイルを別途入手し、同時に読み込むか、同じフォルダに配置した上で再度読み込みを行ってください。
MIBビューワーとして使用する
読み込んだMIBファイルの内容がツリーで表示されます。
先ほど確認したyamahaSWHardwareグループのyshCpuUtil1minをクリックすると、右側に実際のOIDやDescriptionなどが表示されます。

yamahaSWLoopDetectのysldPortStatusを見てみると、「Lookup」欄で、値に対してステータスが定義されていることがわかります。
このOIDでは、値「2」が「normal」、値「3」が「detected」と定義されていることが確認できます。

監視するMIBを切り出す
PRTGで監視する予定のMIBを切り出して保存します。
切り出さずにすべてをPRTGにインポートすることも可能ですが、OIDが多すぎる場合、センサー追加時にPRTGがハングアップする可能性があります。
ここでは監視対象OIDを含む「YAMAHA-SW-HARDWARE」と「YAMAHA-SW-LOOP-DETECT」グループで切り出します。
- 「File」メニュー「Enable Partial Selection」をクリック
- 切り出したいMIB部分にチェックを入力
- 画面下部の「Save As…」ボタンをクリック
- ファイル名を入力し、拡張子.oidlib形式で保存
センサー追加時に、ファイル名を指定します。わかりやすいファイル名にします。
ここではファイル名を「YAMAHA_SWX2310.oidlib」として保存します。


PRTGに「.oidlib」ファイルを配置
「.oidlib」ファイルを、PRTGをインストールしたPC・サーバーの次のパスにコピーします。
C:\Program Files (x86)\PRTG Network Monitor\snmplib
これでインポートが完了しました。
カスタムライブラリセンサーを追加
ここからは、PRTGでセンサーを追加します。監視対象機器ではSNMPが有効になっており、PRTGからSNMPで通信できることを前提とします。
また、PRTGには監視対象機器を「デバイス」として追加済みで、SNMPの資格情報も設定済みとします。
これから準備・設定を行う場合は、次のブログを参考にしてください。
ネットワークアセスメント入門:「PRTG」で帯域幅を見える化
ヤマハのルーター「RTX830」、L2スイッチ「SW2310」をPRTGでかんたん監視|自動検出テンプレートあり
センサー追加
センサーを追加します。
- センサーを追加するデバイスの「センサー追加」をクリック
- センサー追加ウィザードで検索欄に「ライブラリ」と入力
- 「SNMP ライブラリ」センサーをクリック
- 「ライブラリファイルを選択してください」ダイアログで、.oidlibファイルをクリック
ここでは「YAMAHA_SWX2310.oidlib」 - 「OK」をクリック



しばらくすると、「SNMP ライブラリ固有の設定」が表示されます。

ここで、センサーで監視するOIDを選択していきます。
「SNMP ライブラリ固有の設定」でOIDを選択
「SNMP ライブラリ固有の設定」画面では、「.oidlib」に含まれるMIBの中で、この機器で監視可能なOIDの一覧が表示されます。
機器が値を持たず、監視できないものは表示されません。
また、SNMPテーブルOIDについてはインデックス値も含めて表示されます。
テーブルOIDとインデックス値についての参考記事:SNMPカスタムテーブルセンサーはどんな監視ができますか?

ここで、センサーを作成したいOIDをチェックして「作成」をクリックすると、センサーが作成されます。
具体的に見ていきましょう。
メモリ・CPU使用率監視のセンサーを作成
ここでは、先ほど確認した以下のOIDを選択します。
- yshMemoryUtil
- yshCpuUtil5sec
- yshCpuUtil1min
- yshCpuUtil5min
※右上の検索バーから検索できます。
チェックして「作成」をクリック

新しくセンサーが追加されました。

センサーをクリックし、「全般」画面を確認すると、選択したOIDがセンサーの各チャネルとして作成されています。
また、センサータイプは「SNMP カスタムアドバンスト」となっています。

単位を修正していきます。
「設定」タブをクリックして、設定詳細を確認します。
チャネル#1~#4それぞれの設定が確認できます。
「チャネル #x OID」では、それぞれのチャネルが監視しているOIDを確認できます。
ヤマハのMIBリファレンスによると、このOIDの単位は「%」です。
初期状態では、各チャネルの「チャネル #x 単位」は「Custom」に設定されています。ドロップダウンメニューから「Percent」を選択します。
全てのチャネルの単位を「Percent」に変更し、保存します。



これで、メモリ・CPU使用率監視のセンサーを作成できました。
センサー名はMIBの内容を元に自動生成されます。わかりやすいセンサー名に変更するのもよいでしょう。
各チャネルにしきい値(PRTGでは制限値)を設定することもできます。以下の資料をご参照ください。
また、メモリ使用率とCPU使用率を別々のセンサーとして管理したい場合は、それぞれのOIDのみを選択して、2回に分けてセンサーを作成します。
ヤマハ独自のループ検出機能監視のセンサーを作成
次に、先ほど確認した「ysldPortStatus」からセンサーを作成します。
「ysld port status」で検索すると、複数のエントリが表示されます。
各OIDの末尾には「1.1」などのインデックスが追加されていることがわかります。

ヤマハのMIBリファレンスによると、このOIDはSNMPテーブルOID「ysldPortTable」内の列であり、インデックスを指定する必要があります。末尾の値はポートの番号であることがわかります。
今回は例として全ポートを選択し、「作成」をクリックします。

各ポートごとにセンサーが追加されました。

「全般」画面を確認するとセンサータイプは「SNMP カスタムテーブル」センサーになっています。
チャネルは「ysldPortStatus」で、値は「normal」となっており、現在ループを検知していないことがわかります。

ただし、チャネルのゲージが黒くなっています。これは、「normal(2)」や「detected(3)」などの各値に対して、センサーがどのステータス(アップ、ダウン、警告)として扱うかが設定されていないためです。
このような場合は、ルックアップファイルを調整して、各値に対応するセンサーのステータスを設定します。
ルックアップファイルの調整
ルックアップファイルを調整していきます。センサーの「設定」タブをクリックすると、「テーブル固有の設定」の「チャネル #1 ルックアップ」に「oid.yamaha-sw-loop-detect.ysldport.ysldportstatus」が選択されています。

これはセンサー追加時にMIBの内容から自動で作成されたルックアップファイルです。
ここで、各値に対するセンサーのステータスを設定します。
この作業は、ファイルを直接編集する必要があります。
PRTGをインストールしたPCの、次のパスにこのファイルがあります:
C:\Program Files (x86)\PRTG Network Monitor\lookups\custom
※デフォルトのインストール先
「oid.yamaha-sw-loop-detect.ysldport.ysldportstatus.ovl」を探し、メモ帳などのテキストエディタで開きます。
ファイルはXMLで記述されています。
<?xml version="1.0" encoding="UTF-8"?>
<ValueLookup id="oid.yamaha-sw-loop-detect.ysldport.ysldportstatus" desiredValue="1" undefinedState="Warning" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PaeValueLookup.xsd">
<Lookups>
<SingleInt state="None" value="1">
disabled
</SingleInt>
<SingleInt state="None" value="2">
normal
</SingleInt>
<SingleInt state="None" value="3">
detected
</SingleInt>
<SingleInt state="None" value="4">
blocked
</SingleInt>
<SingleInt state="None" value="5">
shutdown
</SingleInt>
</Lookups>
</ValueLookup>
各値の「state」属性でセンサーのステータスを指定します。
現在はすべて 「None」に設定されています。
指定できるステータスは以下です:
state:PRTGでの扱い、ステータス
- None:ステータスを変更しない(値のみ表示)
- OK:アップ(緑)
- Warning:警告(黄)
- Error:ダウン(赤)
ここでは次のように変更し、ファイルを上書き保存します。
ステータスの割り当ては、運用に合わせて変更してください。
また、desiredValue(期待される値)を「normal」に相当する「2」に変更します。参考:https://www.paessler.com/manuals/prtg/define_lookups#desiredvalue
<?xml version="1.0" encoding="UTF-8"?>
<ValueLookup id="oid.yamaha-sw-loop-detect.ysldport.ysldportstatus" desiredValue="2" undefinedState="Warning" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PaeValueLookup.xsd">
<Lookups>
<SingleInt state="Warning" value="1">
disabled
</SingleInt>
<SingleInt state="OK" value="2">
normal
</SingleInt>
<SingleInt state="Error" value="3">
detected
</SingleInt>
<SingleInt state="Error" value="4">
blocked
</SingleInt>
<SingleInt state="Error" value="5">
shutdown
</SingleInt>
</Lookups>
</ValueLookup>
ルックアップファイルの編集をPRTGに反映させます。
- PRTGウェブGUIの「設定」>「システム管理」>「管理ツール」で「ルックアップとファイルリストの読込み」の「実行」ボタンをクリック


これで、ループ検出状態に応じてセンサーのステータスが変化するようになります。


今回は自動生成されたルックアップファイルを編集しましたが、ルックアップファイルはユーザーが独自に作成することもできます。
参考:値の解釈(ルックアップ)https://prtg.jtc-i.co.jp/tech-info/kb-translation/1964/
OIDを直接指定してカスタムセンサーを作成する
ここまでは、MIBファイルを利用してカスタムセンサーを作成する方法を紹介しました。
一方で、MIBファイルを使用せず、OIDを直接指定してカスタムセンサーを作成することもできます。例えば、次のような場合に有効です。
- MIBファイルは入手できないが、OIDの情報はわかっている
- テーブルOIDの値を確認しながらセンサーを作成したい
「SNMP カスタム」および「SNMP カスタムアドバンスト」センサーでは、センサー追加時にOIDを直接指定できます。
また、「SNMP カスタムテーブル」センサーでは、テーブルOIDの値を確認しながらセンサーを作成できます。
詳細は次の記事を参考にしてください。
まとめ
本記事では、ヤマハSWX2310のMIBファイルを例に、PRTGでプライベートMIBを利用したSNMP監視を行う方法を紹介しました。MIBファイルを.oidlib形式に変換して取り込み、SNMPライブラリセンサーを作成することで、標準では用意されていない監視項目も監視できます。また、必要に応じてルックアップを調整することで、監視値に応じたステータス表示も行えます。
手順は他ベンダーのMIBファイルでも基本的に同様です。標準センサーでは監視できない項目がある場合は、プライベートMIBを活用してみてください。


