ZabbixのSNMP監視に拡張MIBを追加する

前回Zabbixで追加したアイテムは標準MIBでしたので
今回はベンダー独自の拡張MIBを追加してみます。

拡張MIBのOID取得方法

今回もYAMAHAのNVR500からSNMPで情報を取得します。
拡張MIBはベンダーから提供されており、例えばヤマハルーターの拡張MIBは
こちらからダウンロードできます。

では、分かりやすいメモリサイズを取得してみます。
MIBファイルのうち「yamaha-rt-hardware.mib.txt」を見てみるとyrhMemorySizeで取得できそうですね。
定義名はYAMAHA-RT-HARDWAREにするみたいです。

privatemib.png

名前で取得するにはMIBファイルを/usr/share/snmp/mibs/に保存します。
複数ファイルありますが、依存関係があるので全て追加した方がいいです。

[centos@centos ~]$ wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
[centos@centos ~]$ sudo tar -zxvf yamaha-private-mib.tar.gz -C /usr/share/snmp/mibs/

snmpwalkコマンドを実行すると情報が取得できると思います。

[centos@centos ~]$ snmpwalk -v 2c -c public 192.168.100.254 YAMAHA-RT-HARDWARE::yrhMemorySize
YAMAHA-RT-HARDWARE::yrhMemorySize.0 = INTEGER: 67108864

OIDはsnmptranslateコマンドで取得することができます。

[centos@centos ~]$ snmptranslate -On YAMAHA-RT-HARDWARE::yrhMemorySize
.1.3.6.1.4.1.1182.2.1.2

ちなみにMIBファイルがないと以下の通りOIDは取得できません。
ただ実際に取得する際にOIDで取得するのならMIBファイルがなくとも取得することはできます。

[centos@centos ~]$ snmptranslate -On YAMAHA-RT-HARDWARE::yrhMemorySize
MIB search path: /home/centos/.snmp/mibs:/usr/share/snmp/mibs
Cannot find module (YAMAHA-RT-HARDWARE): At line 1 in (none)
YAMAHA-RT-HARDWARE::yrhMemorySize: Unknown Object Identifier

以上の手順で取得したい情報、OIDが特定できると思います。

コンテナ版Zabbixに拡張MIB追加

OIDで指定すれば必要ないのですが、せっかくなのでZabbixに拡張MIBを追加してみます。
公式のコンテナイメージだと/var/lib/zabbix/mibsをボリュームにしてそこに追加するらしいですが、/usr/share/snmp/snmp.confが準備されていないのでそこに追加するだけじゃ意味がありません。
何故なのか。
と言うわけでsnmp.confを作成して/var/lib/zabbix/mibsを参照させます。
snmp.confの内容はこんな感じ。

MIBDIRS /usr/share/snmp/mibs:/var/lib/zabbix/mibs
MIBS all

続いてdocker-compose.ymlのvolumesを例えば以下のようにします。

  zabbix_server:
    image: zabbix/zabbix-server-mysql:alpine-4.4-latest
    container_name: zabbix_server
    volumes:
      - ./snmptraps:/var/lib/zabbix/snmptraps
      - ./mibs:/var/lib/zabbix/mibs
      - ./snmp.conf:/usr/share/snmp/snmp.conf

反映させるにはZabbix Serverを再起動する必要があります。

ボリュームで指定したmibsフォルダにMIBファイルを保存しましたらZabbixでアイテムを作成します。
snmpwalkで取得できたYAMAHA-RT-HARDWARE::yrhMemorySize.0をOIDに指定します。

zabbix_mib_01.png

しばらく待って無事取得できればOKです。

zabbix_mib_02.png

ちなみにMIBファイルが正しく読み込めていないと「snmp_parse_oid(): cannot parse OID “YAMAHA-RT-HARDWARE::yrhMemorySize.0”.」と言うエラーが発生しますので、/var/lib/zabbix/mibsにMIBファイルが保存されているか、snmp.confは存在するか、Zabbixを再起動したか、などをご確認ください。

zabbix_mib_03.png

最初MIBファイルをダウンロードして、このファイルをどうしろと?
と言う感じでしたがようやくわかってきました。
今回のZabbixでSNMP取得してみて、確かにテンプレートは豊富で便利なんですが、
実際に使ってみるとマクロやらディスカバリーを使いこなさないと思ったように
情報は集められないなぁと感じました。
これからの運用でいろいろ試していきたいと思います。