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の本も書くことができました。感謝しています。
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をなんとかする部品も、そろいました。
つづく