PolycomとSNMP-01

「ポリコム機器にSNMPアクセスし、機器の状態や値を取得する」という検証が必要になり、少し調べてみました。

まずSNMPが良く分かっていないので、そのあたりから調べます。

SNMPで何ができるか?
1.監視装置から機器へ値を取りに行く事ができる。(GetRequist)
2.監視装置から機器へ値をセットする事ができる。(SetRequest)
3.機器で何か発生した時、機器から監視装置へ情報を発信してくる。(Trap)

ということができ、機器側を「エージエント」、監視装置を「マネージャー」と呼ぶようです。

ポリコム機器のSNMP設定項目を見てみます。(HDX)
hdx-snmp

Enable SNMP→SNMP機能をONにする場合チェックですね。

Trap Version→SNMPのバージョンですね。HDXはv1/v2cが選択できるようです。Groupなどはv3も追加されていますね。

Read-Only Community→SNMPのコミュニティ名ですね。この文字列がエージエントとマネージャーで一致していないと値を取得できません。Read Onlyとなっているので、先の1.はできるが2.はできないということですね。マニュアルを見てみましたがポリコムの端末はSetRequestには対応していないようです。

Contact Name/Location Name/System Description→これは機器の登録情報ですね。SNMPマネージャーから値を取得できますが動作には影響がない値と思います。

Console IP Address→これはHDXがTrapを送信する先のIPですね。Trapを受け取る事ができる監視装置のIPアドレスになります。

とりあえず上記キャプチャの状態になっていれば、SNMPマネージャーから「バージョンは2c」で「public」というコミュニティ名を使用してSNMPアクセスできそうです。(デフォルトpublicのままはもちろんセキュアではないです。検証なのでこのまま行きます)

SNMPマネージャー

機器側(HDX)のSNMP設定はそれほど項目はなさそうなので、次にSNMPマネージャー側の準備をします。

SNMPのマネージャーは、商用、フリー、オープンソース含めいろいろなマネージャーが統合管理ソフトとしてリリースされているようです。

オープンソース統合監視ソフトウェアZabbixというのが良くつかわれている様なので、こちらのソフトを使用してみることにしました。

しかし、機器のSNMPを動作確認するという目的ではすこし大掛かりなので、まずはコマンドベースでSNMPアクセスできるsnmpwalkというアプリを使用します。

snmpwalkはNet-SNMPに含まれるコマンドなので、LinuxへNet-SNMPをインストールすれば使用できるようになります。(Windows版もあるようですがZabbixサーバーはLinuxで立ち上げる予定なのでCentOSへNet-SNMPをインストールしました)

# yum -y install net-snmp
# yum -y install net-snmp-utils
でサクッと入りますね。

インストールできたところで先ほどのHDXへSNMPアクセス可能かテストをしてみます。

snmpwalk -v バージョン -c コミュニティ名 機器のIP
snmpwalk-01

SNMPアクセスできると、取得可能な項目がずらずらずら~~~~~と流れてきます。(Ctrl Cで止まります)
snmpwalk-02

ここまでの準備で、「HDXにSNMPの設定を行い、snmpwalkを使用してSNMPアクセスする」という環境ができました。

次は「目的の項目を取得する」です。

SNMPの場合、標準MIBを呼ばれる機器に固有でない標準的な値がRFC1213で定義されています。

→MIBってなんやねん・・・・SNMPでどの値(OID)へアクセスすれば目的の情報が取得できるか記述したファイルです。

例えば、システムのuptimeなどは標準MIBで定義されていますので、上記RFCの中を検索してみると・・・
1-3-6-1-2-1-1-3

system.3 の位置にその項目があることがわかります。

systemってどこやねん・・・となるのですが、これはMIBのツリーをみるとわかります。

snmptranslateというコマンドで、MIBに記述されている名前ベースの場所と数字ベースの場所を相互に変換できるのですが、MIBのツリー構造も出力する事ができますので、まず標準MIBに含まれているツリーを出力してみます。

snmptranslate -Tp
snmptranslate-tp-2

上をみるとsystemの場所は、1.3.6.1.2.1.1なので、その下にあるsysUpTime(3)までのOIDは、1.3.6.1.2.1.1.3になることがわかります。

システムの起動時間を参照するSNMPのOIDが判明したので、HDXのこの値にアクセスしてみます。
snmpwalk-1-3-6-1-2-1-1-3

このHDXは起動してから245日間経過していることが、SNMPで取得できました。

上記値は、SNMPの「標準MIB」に含まれている値なので、OIDを調べる事が可能でしたが、Polycom機器固有の値は「拡張MIB(プライベートMIB)」というメーカーが提供しているMIBファイルにその値を返すオブジェクトの場所が記述されています。(たとえばそのHDXに設定されているGatekeeperのIPアドレスを返すようなオブジェクトはポリコムのプライベートMIBに記述されています)

ですので、このプライベートMIBを入手する必要があるのですが、ポリコムの場合、ほとんどの機器でSNMPの設定画面からダウンロードする事が可能です。

HDXの場合は下記のリンクですね。
mib%e3%81%ae%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89

このMIBの入手で、HDX固有の値(あまり数はありませんが・・・)にSNMPアクセスする事が可能になります。

しかし、このMIBファイルを開いて、またOIDを調べてというのは手間がかかります。
なので、「MIBブラウザ」というMIBのツリーを参照するツールを使用し、目的のOIDを見つけてみようと思います。

長くなりましたので、次回へ続きます。

PolycomとSNMP-02 へ続きます。