SNMPによる監視でOIDからシンボル名への変換
お世話になります
OS:CentOS7.3
Zabbix Version:3.0.8
DB Version:MySQL 5.7.17
net-snmp-util Version : 1:5.7.2-24.el7_2.1
現在CiscoのL2SWのCPUとMemoryの監視を行いたいと思っております。
例としてメモリの空き容量についてアイテムを作成しました。
==============================
監視項目1:Memory空き容量
タイプ:SNMPv2エージェント
キー:switch.memory.free
SNMP OID :1.3.6.1.4.1.9.9.48.1.1.1.6.1
データ型:数値(整数)
データの形式:10進数
更新間隔(秒):300
==============================
SNMP OIDをみてお分かりのとおりCiscoのプライベートMIBでこれを
シンボルである「CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree.1」で
アイテムのほうを設定したいと考えていますが、snmptransleteでは
# snmptranslate 1.3.6.1.4.1.9.9.48.1.1.1.6.1
CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree.1
とZabbixServerのコマンドラインでは変換できているものの、いざZabbixのアイテム設定で行うと
「情報」欄で
「snmp_parse_oid(): cannot parse OID "CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree.1".」
となり情報が取れなくなります。
ただ、アイテムでSNMP OID設定で「1.3.6.1.4.1.9.9.48.1.1.1.6.1」で入れると上手くいくのですが
極力設定をシンボル名で統一したいと考えてます。
ちなみにMIBファイルの設定ですが
・net-snmpで標準のMIBファイルのディレクトリ:/usr/share/snmp/mibs
・Zabbix監視で必要なMIBファイルのディレクトリ:/usr/share/snmp/privatemibs
で管理しており、/etc/snmp配下にsnmp.confファイルを新規作成し以下の記述を
しております
# cat snmp.conf
MIBDIRS /usr/share/snmp/mibs:/usr/share/snmp/privatemibs
MIBS all
※「改訂版 Zabbix統合監視実践入門」ではPrivate MIBは「~/.snmp/snmp/mibs」を新規作成し
snmp.confファイルについては「~/.snmp/snmp.conf」に作成するようなっていますが、環境の制約で
上記の設定になっています。
CiscoのMIBファイルですが
以下のものをPrivate MIBのディレクトリに入れています
CISCO-MEMORY-POOL-MIB.my
CISCO-PROCESS-MIB.my
CISCO-QOS-PIB-MIB.my
CISCO-SMI.my
CISCO-TC.my
Zabbixサーバのコマンドラインでは「snmptranslate」コマンドでMIBファイルのOIDとシンボル名の
変換は出来ているのですが実際のZabbixの設定では出来ないのはどこか設定が間違っているからでしょうか。
SNMPについてはいろいろ調べたのですが、Zabbixでは設定が出来ないのが不思議なのです。
過去にこのようなご経験をされた方がいらっしゃいましたら、また上記問題?をご存知の方がいらっしゃいましたら
ご教示願えませんでしょうか
よろしくお願いします
TNK - 投稿数: 4769
/etc/snmp/snmp.confではなく/usr/share/snmp/snmp.confとして作成
してみていただけませんか?
HERCULY - 投稿数: 37
TNKさま
お返事ありがとうございました。
一点だけ設計段階で変更があり、実際の
>ちなみにMIBファイルの設定ですが
>・net-snmpで標準のMIBファイルのディレクトリ:/usr/share/snmp/mibs
>・Zabbix監視で必要なMIBファイルのディレクトリ:/usr/share/snmp/privatemibs
>で管理しており、/etc/snmp配下にsnmp.confファイルを新規作成し以下の記述を
>しております
で、Zabbix監視で必要なMIBファイルのディレクトリが「/usr/share/privatemibs」でなく
「/etc/zabbix/MIB」で構築しておりました。
本来「/etc/zabbix」ディレクトリに配下にPrivate MIBのディレクトリを入れるのは小生的にはあまり好ましくない
と思っているのですが、もしこの状態で存置する場合ですが
TNKさまから
「/etc/snmp/snmp.confではなく/usr/share/snmp/snmp.confとして作成してみていただけませんか?」
というのはとりあえずやってみたのですが、変化はありませんでした。
現状の「/usr/share/snmp/snmp.conf」では
# cat snmp.conf
MIBDIRS /usr/share/snmp/mibs:/etc/zabbix/MIB
MIBS all
となっていました。
この場合でも「/usr/share/snmp/snmp.conf」以外に置く必要がございますでしょうか?
仕様が変更され恐れ入りますがよろしくお願い申し上げます
TNK - 投稿数: 4769
以下の手順で確認してみました。
/etc/zabbix/MIBに以下のファイルを配置する。
CISCO-MEMORY-POOL-MIB
ftp://ftp.cisco.com/pub/mibs/v2/CISCO-MEMORY-POOL-MIB.my
CISCO-QOS-PIB-MIB
ftp://ftp.cisco.com/pub/mibs/v2/CISCO-QOS-PIB-MIB.my
CISCO-SMI
ftp://ftp.cisco.com/pub/mibs/v2/CISCO-SMI.my
/usr/share/snmp/snmp.conf を新規作成する。
-----
MIBDIRS /usr/share/snmp/mibs:/etc/zabbix/MIB
MIBS all
-----
Zabbixサーバーを再起動する。
# systemctl restart zabbix-server
アイテムとしてSNMPv2を使用し、OIDには
CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree.1
を指定したアイテムを作成する。
そうすると、
「No Such Object available on this agent at this OID」
というエラーになる。
「snmp_parse_oid(): cannot parse OID "CISCO-MEMORY-POOL-MIB::ciscoMemoryPoolFree.1".」
にはなりませんでした。
私の場合は、試した接続先の機器がCiscoの機器ではないのですが、
parseでエラーにはなっておらず、OIDの文字列を解釈して取得を試
みて、該当するオブジェクトがSNMPエージェント上には無いという
エラーになっているように見えます。
環境は以下の通りです。
CentOS Linux release 7.3.1611
Zabbix 3.2.6
net-snmp-libs-5.7.2-24.el7_3.2.x86_64
net-snmp-utils-5.7.2-24.el7_3.2.x86_64
Zabbixのバージョンは異なりますが、SNMPの処理の部分は昔からの
機能なので大きく変わってはいないと思います。