SNMP監視
概要
別端末からネットワーク経由で拠点の製品保証サーバーや見えるサーバーの情報を取得することが出来る。
SNMPとは
SNMP(Simple Network Management Protocol)とは、ネットワーク内に存在する装置の状態を監視することを目的につくられたプロトコルで業界標準の規格です。各ベンダ共通の規格なので、サーバーやルータの種類を問わず利用可能です。
SNMPはマネージャ側(監視サーバなど、管理側)とエージェント側(監視対象のサーバ、ネットワーク機器など)に分かれて構成されます。
MIBとは
MIB(Management Information Base)とは、管理情報を蓄積したデータベースで、SNMPエージェントは監視対象機器の情報をMIBから参照します。
MIBには「標準MIB」とメーカーや機器固有のものなどが存在します。メーカーや機器固有のものはメーカーに確認する必要があります。
OIDとは
MIBに格納されている情報の1つ1つは「オブジェクト(Object)」と呼ばれます。
オブジェクトは情報の要素によってツリー構造で管理され、それぞれに「オブジェクトID(OID)」という識別子が割り振られています。
OIDはピリオドで区切られた数字で表現されます。
標準MIBのうち「MIB-2」はOID「1.3.6.1.2.1」になります。
- MIBの例
iso(1) L org(3) L dod(6) L internet(1) L private(4) L mgmt(2) L mib2(1) L system(1)
MIBに含まれているオブジェクトのOIDとその意味は「MIBファイル」というテキストファイルに記述されています。
監視対象機器からSNMPを使ってどのような情報を収集できるかは、その監視対象機器がサポートしているMIBファイルを確認する必要があります。
設定
SNMPを使用できるようにする設定は下記サイトを参照
SNMPサービスのプロパティにあるセキュリティタブにて、コミュニティ名“public”を追加して、「すべてのホストからSNMPパケットを受け取る」にチェックを付ける。
取得方法
VBScript
VBScriptで取得するには、COMにある OlePrn.OleSNMP モジュールを使用することが取得することが出来る。
ただし、OID 番号で指定する必要があるのと snmpwalk のような列挙ができない。
agentIP = "192.168.64.123" ' エージェントIPアドレス community = "public" ' エージェントSNMPコミュニティ名 retry = 1 ' リトライ回数 timeout = 200 ' 応答タイムアウト値(ミリ秒) oid = ".1.3.6.1.2.1.1.5.0" ' OID(OIDを変えると取得情報を変えることができる) set snmp = CreateObject("OlePrn.OleSNMP") call snmp.Open(agentIP, community, retry, timeout) value = snmp.Get(oid) 'メッセージを表示 WScript.Echo(value) call snmp.Close() set snmp = nothing
SScrRun.dllの登録
System Scripting Runtime 1.5のSNMP用ライブラリー(SScrRun.dll)
登録方法
Active Xコンポーネントエラー「SScrRun.dll」が作成できませんが発生した場合
>RegSvr32.exe SScrRun.dll
Net-SNMP
SNMPプロトコルを実装したOSS
http://www.net-snmp.org/
インストール
下記サイトの「net-snmp-5.7.0-1.x86.exe」をダウンロードしてインストールする。
https://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.7-binaries/
インストールオプションは、コマンドラインアプリケーション のみを使用のため「Base Components」 のみインストールします。
Windows を使用した SNMP の検証環境構築のSNMP エージェントの通信テスト
テスト
192.168.64.123サーバー名を取得する。
snmpwalk -v バージョン -c コミュニティ名 IPアドレス OID(.1.3.6…または値の名称でも可)
> snmpwalk -v2c -c public 192.168.64.123 .1.3.6.1.2.1.1.5.0 SNMPv2-MIB::sysName.0 = STRING: TEST
CSharp
nugetからLextm.SharpSnmpLibをダウンロードして使用する。MITライセンスとなっている。
Walk を使用することで一覧が一括で取得できる。
よく使うOID情報
名前 | OID | 説明 |
---|---|---|
MACHINE_NAME | .1.3.6.1.2.1.1.5.0 | ホスト名(コンピューター名) |
SNMP_MACHINE_UPTIME | .1.3.6.1.2.1.1.3.0 | SNMPエージェントが起動してからの時間 1/100秒 |
MACHINE_SYS_UPTIME | .1.3.6.1.2.1.25.1.1.0 | 前回ホストが起動してからの時間 1/1000秒 |
MACHINE_SYS_DATE | .1.3.6.1.2.1.25.1.2.0 | ホストから見たローカルの日付と時間 |
MACHINE_RAMMEMORY | .1.3.6.1.2.1.25.2.2.0 | ホストが持っているRAMの容量 |
IP_ADDRESS | .1.3.6.1.2.1.4.20.1 | ホストのIPアドレス |
PROCESS_LIST | .1.3.6.1.2.1.1.1.0 | プロセス一覧(snmpwalk使用) |
http://oidref.com/ の次に OID 番号を入力すると何かを教えてくれます。
- 使用例
http://oidref.com/1.3.6.1.4.1.2021