APIを用いたSNMPエージェントシミュレーション
WebNMS
Simulation Toolkit
ネットワーク管理エージェントシミュレーション
APIを用いたSNMPエージェントシミュレーション
WebNMS Simulation Toolkitの振る舞いシミュレーション(Behavior Simullation)機能は、スクリプトAPI、RMIクライアントAPIを提供し、完全なネットワーク環境をシミュレートするために自動化することが可能です。
例えば、実行中にシミュレーションネットワーク上の個々のデバイスを起動/停止、SNMP値の変更、テーブル行の追加/削除、インターフェースステータスの更新、SNMPv1/v2/v3 Trap/Informメッセージの送信、エラー状態/シナリオの設定、SNMPリクエストの応答停止などをスケジュールすることができます。
SNMPスクリプトAPIとRMIクライアントAPIによる共通テストシナリオ設定
SNMPスクリプトAPIとRMIクライアントAPIを使用し、共通のテストシナリオを定義できます。これらのシミュレーションは、シミュレーション処理を停止することなく有効化することが可能です。MIBノード値を一定の割合で増加
スクリプトAPIのメソッド getNodeValue(), updateValue()は、一定の割合でMIBノード値を増加させるために使用します。一定間隔(例:10秒間隔)でスクリプトを実行することが可能なタイマーベーススクリプトを設定することで実現できます。getNodeValue() メソッドは、指定したノードの値を取得し、updateValue()メソッドは、ノードを新しい値で更新します。
エージェントの起動/停止時にNMSにSNMPトラップを送信
エージェント起動時に実行するタイマーベーススクリプトを設定することで実現可能です。sendTrap()メソッドにより、エージェント起動時に必要なSNMPトラップを送信可能です。また、stopAgent()メソッドを呼び出す前にsendTrap()メソッドを実行することでNMSにSNMPトラップを送信することができます。
既存のネットワークにSNMPデバイスを追加
スクリプトAPIのaddSnmpAgent()メソッドにより、既存のネットワークにSNMPエージェントを追加することができます。デバイスツリー上に存在するデバイスを使用し、現在、選択されているネットワークに新規のデバイスを追加します。
既存のネットワークからSNMPデバイスを削除
deleteSnmpAgent()メソッドにIPアドレスとポート番号を指定することで実現可能です。デバイスは、選択されているネットワークから削除されます。
数千エージェントからSNMPトラップを一括送信
sendTrap()メソッドを使用し実現できます。このメソッドは、パラメータとしてIPアドレスとポート番号を持ちます。スクリプト内で、いくつものエージェントからSNMPトラップを送信するように記述します。
IF-MIBのifAdminStatusを取得、linkUp/linkDown SNMPトラップを送信
これは、リクエストベーススクリプト内で、getNodeValue()メソッドとsendTrap()メソッドを呼び出すことで実現することが可能です。getNodeValue()メソッドにてifAdminStatusの現在値を取得し、値によってlinkup/linkdown SNMPトラップを送信します。
他のノードの値により動的にSNMPテーブルの行エントリを追加/削除
リクエストベーススクリプト/タイマーベーススクリプトでgetNodeValue(),insertRow(),deleteRow() メソッドを呼び出すことで実現できます。insertRow()メソッドはテーブルに行を追加し、deleteRow()はテーブルから行エントリを削除します。getRowCount()メソッドは、SNMPテーブル内の総行数取得します。
インターフェースステータスを変更しSNMPトラップを送信
upInterface()メソッドはインターフェースを有効化し、downInterface()メソッドはインターフェースを無効化します。ステータスが変更された場合、sendTrap()メソッドでSNMPトラップを送信します。
エージェントの起動/停止
startAgent()メソッド、stopAgent()メソッドを実行するスクリプトを設定することでネットワーク上のエージェントを起動/停止できます。
TFTPサーバ起動/停止
startTFTPServer()メソッド、stopTFTPServer()メソッドを実行することで実行時に、TFTPサーバの起動/停止が行えます。
TFTPを使用しファイルのアップロード/ダウンロード
ネットワーク上のそれぞれのデバイスは、TFTPクライアントおよびサーバ機能を持っています。uploadFile()メソッドとdownloadFile()メソッドを使用し、TFTPクライアントからこのサーバにファイルをアップロードもしくは、TFTPサーバからファイルをダウンロードすることが可能です。
SNMPレスポンスの遅延
以下のようなコードをスクリプト内に実装することで、SNMPレスポンスを遅延させることが可能です。Thread.sleep()メソッドの引数は、ミリ秒単位の値となります。この値をSNMPタイムアウト値より大きくすることでタイムアウト時のシナリオテストを実行できます。
from java.lang import Thread
Thread.sleep(1000)
デバイスのIPアドレスを取得
getIpaddress()メソッドにより実行時にデバイスのIPアドレスを取得することができます。
行の一括更新
以下のようなスクリプトAPIメソッドを実装することでSNMPテーブルの全てのインスタンスのカラム値を一括更新することが可能です。
scriptinterface.getInstances()
scriptinterface.updateValue()
scriptinterface.getInstances()メソッドにて、指定されたテーブルのインスタンスを取得することが可能です。scriptinterface.updateValue()メソッドは、テーブルインスタンスの値を更新することが可能です。
設定値の有効範囲を確認
SETリクエストにて設定された値を確認するために、scriptinterface.getCurrentValue() メソッドにてSETリクエストにて指定された値を取得できます。この値を指定された範囲かどうかを確認し、範囲外の場合は、scriptinterface.terminateOperation目祖度にてSETリクエストを終了させることが可能です。
テーブルに行を追加
scriptinterface.insertRow()メソッドにより、実行時にSNMPテーブルに新規行を追加することができます。このメソッドをループ処理内で実行することで複数行を一括追加することが可能です。
一時的/長期間のエージェント停止
一時的/長期間のエージェント停止をシミュレーションするには、タイマーベーススクリプト内でstopAgent()メソッド、startAgent()メソッドを実行します。stopAgent()にて動作中の指定したIPアドレスのエージェントを指定した間隔で停止します。start Agent()メソッドで指定した間隔でエージェントを再起動します。
<< エージェントデータの記録
リモートAPI >>