見出し画像

TWSNMPのSNMP対応方法

最大のポイントSNMPをどうするか?

TWSNMPマネージャの最大のポイントはSNMPでノードを監視できることです。SNMPは、Simple Network Management Protocolの略ですが、実は、Simpleという名のわりには作るのが難しいプロトコルです。それは、頭のよい人たちが考えた国際標準の ASN.1という仕様を使っているからです。メールやWebページを見るための他のプロトコルは、文字列を送受信するものが多く、こんなに、難しいものは、あまりありません。

最初のSNMPエージェント開発

30年近く前に、SNMPと出会って、最初に作ったエージェントは、商用のTCP/IPプロトコルスタックに、ふんわりと実装されていた(ちゃんと動かない)SNMPエージェントを何とか使えるようにしたものです。ASN.1の仕様を調べて、苦労して実装しましたが、トラブルも多かったと思います。

SNMP Research

その後、ワシントンのインターロップのSNMPのセミナーで講師をしていた Case教授と出会います。英語は不得意な私でも、かなり楽しめる講義でした。Case教授は、SNMPの作者の一人で、SNMPのライブラリを販売する会社SNMP Researchの社長でもあります。最初の開発で、苦労したSNMPの実装も、SNMP Researchのライブラリを使うようになって、ちゃんとしたものが作れるようになりました。エージェントだけでなくSNMPマネージャも開発しました。

SNMP Researchは、アメリカのテネシー州にあり、会社は、テネシーリバーを見下ろす牧場にあります。何度か訪れたことがあります。トラクターにも乗りました。Case教授が日本に来た時も、川越などを案内したことがあります。Case教授に教わったことで、SNMPの本も書くことができました。感謝しています。

画像1

Net-SNMP

オリジナルのTWSNMPはフリーウェアにするため開発にはSNMP Researchのライブラリは使えませんでした。そのため、オープンソースのSNMPライブラリNet-SNMP を使いました。

このライブラリを使って、エージェントやマネージャなどの沢山のSNMP関連のソフトを開発しました。

GOSNMP

今回開発するTWSNMPの復刻版は、GO言語で開発するので、Net-SNMPの利用はできません。そこで、探すと、いいものがありました。

https://github.com/soniah/gosnmp

ありがとう
でも、ちょっと不足する部分がありました。SNMPで情報取得する場合MIBというものを使用します。対象から情報をMIBの名前を指定して取得したいのですが、GOSNMPでは、数値で指定しなければならず、人間であるプログマーにとって不便なライブラリになっています。そこで、

を自作しました。

拡張MIBの読み込み

この記事を最初に書いた後の開発で、MIBファイルをパースできるGO言語のパッケージ

https://github.com/sleepinggenius2/gosmi

を見つけて拡張MIBも読み込めるようにしました。

これで、SNMPをなんとかする部品も、そろいました。

つづく


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。