こちらはIndusol社のネットワーク機器記事の第3話を展開していきます。PROmesh P10+にSNMP Serverがあり、今回はSeeedStudioのrecomputer1025とNode-Redを使用し、PROmesh P10+のSNMP Serverにアクセスする方法を紹介します。
さ、FAを楽しもう。
Reference Link
http://soup01.com/ja/category/indusol/
http://soup01.com/ja/category/seeedstudio/
SNMP?
SNMP(Simple Network Management Protocol)は、IPネットワーク上のネットワーク機器やアプリケーションを管理・監視するために広く使われているプロトコルです。 インターネットプロトコルスイートの一部であり、ネットワークデバイス間の管理情報の交換を容易にし、管理者がネットワークのパフォーマンスを管理し、ネットワークの問題を発見して解決し、ネットワークの成長を計画することを可能にします。
Main Characteristics
Client-Server Model
SNMPはクライアント・サーバー・アーキテクチャで動作できます。
- クライアントは通常、管理ステーションです。
- サーバーはルーター、スイッチ、サーバー、プリンターなどのネットワーク・デバイス(管理対象デバイスとも呼ばれる)です。
Agents and Managers
- Agentsは管理対象デバイス上で実行されるソフトウェアコンポーネントで、管理データの収集と保存、および管理アプリケーションからのリクエストへの応答を担当します。
- Managerはエージェントと通信し、データの収集、コマンドの送信、ネットワーク状況に関する通知(トラップ)の受信を行うソフトウェアアプリケーションです。
Management Information Base (MIB)
MIBは、管理対象デバイスのプロパティを定義する階層型データベースであり、デバイスのデータ・ポイントを記述するデータ・モデルで構成されています。 監視または制御可能な各変数はMIBに定義されています。
Polling and Traps
SNMPは主に2つのモードで動作しています。
- Polling: Managerは定期的にエージェントに情報を問い合わせる。
- Traps: Agentsは、特定のイベントが発生すると、Managerに未承諾の通知を送る。
Versions
SNMPには複数のバージョンがあり、最も一般的なのはSNMPv1、SNMPv2c、SNMPv3です。
- SNMPv1: オリジナルのSNMP版で、セキュリティなしの基本機能を提供します。
- SNMPv2c: エラー処理の改善やデータの一括取得などの改良が加えられたが、強力なセキュリティには欠けています。
- SNMPv3: 暗号化や認証などのセキュリティ機能を追加し、旧バージョンの脆弱性に対応するようになります。
Applications of SNMP
SNMPは色々な場面で使用でき、SNMPは その使いやすさ、多用途性、多数のデバイスで動作する能力により、ネットワーク管理者にとって不可欠なツールとなっています。
Network Monitoring
ネットワークのパフォーマンス、可用性の追跡、障害の検出に使用される。
Configuration Management
デバイスのリモート設定を可能にし、管理者が必要に応じて設定やパラメータを変更できるようにします。
Fault Detection
デバイスの故障やネットワーク・トラフィックの異常について管理者に自動的にアラート。
Reporting and Analysis
ネットワーク傾向を分析し、ネットワーク計画を支援するために使用できるパフォーマンス測定基準を収集します。
Advantage?
SNMPを活用することで、組織はネットワーク・インフラを効果的に維持し、最適化することができます。
Simplicity
SNMPは実装も使用も簡単で、さまざまな機器やアプリケーションに適しています。
Interoperability
SNMPは、さまざまなメーカーのさまざまなデバイスをサポートしているため、多様な環境に簡単に統合できます。
Standardized
インターネット技術タスクフォース(IETF)標準の一部であるため、業界で広く採用されています。
Implementation
InduSol side
最初にIndusolのPROmesh P10+にあるSNMP Serverをツールからアクセスしています。
Download oid mib tools
こちらは今回使用するSNMP Browingの無償ツールです。下記のLinkからツールをDownloadし、PCにインストールしてください。
https://www.ireasoning.com/downloadmibbrowserfree.php
Browse oid object
先程インストールしたMIB Browserツールを起動します。
次はAddress欄にPROmesh P10+のIPアドレスを入れてください。
OpertaionのDrop-ListからGet Nextを選択します。
Done!!PROmesh P10+のsys.Descr.0(1.3.6.1.2.1.1.10)の現在値が取得できました。
1つずつ取るのは面倒なので、OperationからWalkコマンドを発行します。
Done!PROmesh P10+のSNMP ServerあるOIDとその現在値を全部取得しました。
例えばsysDescr.0のOIDを知りたい場合、そのsysDescr.0の欄を選択すれば、OID欄で該当するアイテムのOID値が表示されます。
Add User
今度はSNMP V3を使用するために、PROmesh P10+にUserを追加します。System Configuration>SNMPをクリックします。
こちらはSNMPのCommunity StringやUserの設定画面になります。
SNMP v3の項目で新しいUserを追加しましょう。
Node-red side
先ほどエンジニアリングツールからSNMP Serverの接続を確認しましたので、次はNode-RedからPROmesh P10+にアクセスしてみます。
Install Flow
今回記事で使用するのはこちらのNodeになります。
node-red-node-snmp |
https://flows.nodered.org/node/node-red-node-snmp/in/1rPldOSqKt6M
Node-red-node‐snmpをインストール成功したら、下図のNodeが追加されます。
Flow1‐First Access to SNMP Server
最初のFlowはInject Nodeを使用し、取得したいデータのOIDをSNMPノードに送信し、PROmesh P10+から結果を受け取ります。
inject nodeのPropertiesからmsg.oid、そしてString Formatのパラメータを追加します。
また、msg.oidの値は先程エンジニアリングツールから取得した値を設定します。
次はSNMP NodeをFlowに追加します。
Configure the SNMP Node
次はSNMP Nodeno設定を行います。
Host
HostはPROmesh P10+のIPアドレスになります。
Version
PROmesh P10+はVersion V1/V2c/V3も対応していますので、アプリケーションに合わせて設定していきましょう。
Timeout
リクエストのTimeout時間はネットワークの負荷に応じて設定してください。
Community
今回はSNMP v2cを設定しますので、CommunityはPROmesh P10+に合わせて設定しましょう。
OIDs
OIDsは先程Inject Nodesの中に設定しましたので、ここは空きのままでOKです。
Inject the flow
次はInjectの出力とSNMP Nodeの入力が繋がります。
Switch the Condition
今度はSNMPのノード出力にSwitch Nodeを追加します。
SNMP Nodeの出力結果によって分岐を作成します。
Add Functions
Switch Nodeからの出力によって異なるFunction Nodeと接続します。
Function7
こちらはOctetStringから直接文字列変換する関数です。
var data=msg.payload[0].value; var d=Buffer.from(data).toString(); msg.payload=d; return msg; |
Function6
こちらはTimeTicksを文字列に変換する関数になります。
var timeticks=msg.payload[0].value; let totalSeconds = Math.floor(timeticks / 100); const days = Math.floor(totalSeconds / 86400); totalSeconds %= 86400; const hours = Math.floor(totalSeconds / 3600); totalSeconds %= 3600; const minutes = Math.floor(totalSeconds / 60); const seconds = totalSeconds % 60; var workTime=String(days)+”d”+String(hours)+”h”+String(minutes)+”m”+String(seconds)+”s”; msg.payload=workTime; return msg; |
Function8
こちらは整数から文字列に変更する関数です。
var data=msg.payload.value; msg.payload=String(data); return msg; |
Debug Output
最後は出力結果を確認するためのDebug Nodeを追加しましょう。
Result
Done!PROmesh P10+のSNMP Serverに無事にアクセスでき、データも変換できました。
Flow2‐Request more oids in one inject
Flow2では1つのInjectで複数のOIDS Objectにアクセスする方法を紹介します。
Add Inject
先ほどのFlowにInjectとFunction Nodeを追加します。
Function9
OIDのプロパティにアクセスしたいOIDS間を”,”で分けておけばOKです。
var base =”1.3.6.1.2.1.2.2.1.8.” var oid = base + “1,” + base + “2,” + base + “3,”+base + “4,” + base + “5,” + base + “6,”+base+”7,”+base+”8,”+base+”9,”+base+”10″; msg.oid=oid; return msg; |
SNMP Nodeと接続します。
Result
Done!複数のOIDSのデータを取得できました。
Flow3‐Use Walker
最後はWalker Nodeを使用します。
Configure Walker Node
こちらはWalker Nodeの設定画面になります。
Host
Host 欄はPROmesh P10+のIPアドレスになります。
Version
今回はSNMP V3を使用します。
Auth
Walker Nodeの認証方法を”AuthNoPriv”に設定します。これはパスワードのみの認証になります。
Username
Auth Keyは先程PROmesh P10+で追加したSNMP v3 Userの名になります。
Auth Key
Auth Keyは先程PROmesh P10+で追加したSNMP v3 Userのパスワードになります。
Auth Port
Auth Keyは先程PROmesh P10+で追加したSNMP v3 Userの認証方式になります。
Result
Done!Walker NodeからPROmesh P10+のSNMP Nodeを取得できました。