ユーザ用ツール

サイト用ツール


it技術:snmp監視

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/

WindowsでのSNMPお勉強メモ

インストール

下記サイトの「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

ウィンドウズ - Snmpwalk のインストール

CSharp

nugetからLextm.SharpSnmpLibをダウンロードして使用する。MITライセンスとなっている。

Lextm.SharpSnmpLib の使用例

Walk を使用することで一覧が一括で取得できる。

プロセス一覧
var result = new List<Variable>();
Messenger.Walk(VersionCode.V1,
               new IPEndPoint(IPAddress.Parse("192.168.64.123"), 161),
               new OctetString("public"),
               new ObjectIdentifier("1.3.6.1.2.1.25.4.2.1.2"),
               result,
               60000,
               WalkMode.WithinSubtree);

よく使うOID情報

名前OID説明
MACHINE_NAME.1.3.6.1.2.1.1.5.0ホスト名(コンピューター名)
SNMP_MACHINE_UPTIME.1.3.6.1.2.1.1.3.0SNMPエージェントが起動してからの時間 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
it技術/snmp監視.txt · 最終更新: 2024/06/05 18:17 by yajuadmin