snmpでエラーが大量に出た場合の対処(Did not find, Cannot findなど)

snmpwalkやsnmpgetを実施したときに大量にエラーが出されることがあると思います。

その場合の対処方法をまとめました。

snmpでエラーが大量の事象

$ snmpwalk -v 2c -c public 192.168.1.1 SNMPv2-MIB::sysName.0

snmpをインストールし、snmpwalkを実施してみると…

 

MIB search path: /usr/share/snmp/mibs:/usr/share/snmp/private_mibs
Cannot find module (SNMP-FRAMEWORK-MIB): At line 9 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 16 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt
Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmGroupName' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmAccessContextPrefix' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmAccessSecurityModel' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmAccessSecurityLevel' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Cannot find module (SNMP-FRAMEWORK-MIB): At line 10 in /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt
Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendLineIndex ::= { nsExtendOutput2Entry 1 }
Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutLine ::= { nsExtendOutput2Entry 2 }
Cannot adopt OID in UCD-SNMP-MIB: laIndex ::= { laEntry 1 }
Cannot adopt OID in UCD-SNMP-MIB: laNames ::= { laEntry 2 }
Cannot adopt OID in UCD-SNMP-MIB: laLoad ::= { laEntry 3 }

こんな感じで大量のエラーが出力されることがあると思います。
今回はこれに対する対処のご説明です。

今回のエラーはMIBが見つからない場合の対処です。
他の原因の場合は解決しませんのでご注意ください。

Private MIB(Vendor MIB)の追加

snmpdのインストールが済んでいる前提での話になります。

Private MIBを読み込めるようにする設定

まずはPrivate MIBを読み込ませる設定をします。

$ vi /etc/snmp/snmp.conf

mibs all
mibdirs /usr/share/snmp/mibs:/usr/share/snmp/private_mibs

wqで保存して閉じる
$ mkdir /usr/share/snmp/private_mibs
でPrivate MIBディレクトリの追加
systemctl restaret snmpd
systemctl status snmpd

でサービスの再起動を実施

後は必要なMIBを
/usr/share/snmp/private_mibs
配下に入れていけばOKです。

Private MIBが不足していた場合はこれで改善するはずです。

 

標準MIBが不足している場合はこちらの対処が必要

標準MIBの追加

MIB search path: /usr/share/snmp/mibs:/usr/share/snmp/private_mibs
Cannot find module (SNMP-FRAMEWORK-MIB): At line 9 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 16 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt
Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmGroupName' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmAccessContextPrefix' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmAccessSecurityModel' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Did not find 'vacmAccessSecurityLevel' in module #-1 (/usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt)
Cannot find module (SNMP-FRAMEWORK-MIB): At line 10 in /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt
Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendLineIndex ::= { nsExtendOutput2Entry 1 }
Cannot adopt OID in NET-SNMP-EXTEND-MIB: nsExtendOutLine ::= { nsExtendOutput2Entry 2 }
Cannot adopt OID in UCD-SNMP-MIB: laIndex ::= { laEntry 1 }
Cannot adopt OID in UCD-SNMP-MIB: laNames ::= { laEntry 2 }
Cannot adopt OID in UCD-SNMP-MIB: laLoad ::= { laEntry 3 }

Cannot find moduleに注目

大量にエラーが出ている根本原因は「Cannot find module」に大体記載されています。

今回の例だと以下の2つのMIBが不足しているためにエラーとなっています。
※実際にはもう少しエラーが多かったのですがわかりやすくするために一部だけ抜粋しています。

Cannot find module (SNMP-FRAMEWORK-MIB): At line 9 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 16 in /usr/share/snmp/mibs/NET-SNMP-VACM-MIB.txt

MIBのダウンロード

$ cd /usr/share/snmp/

でMIB保存ディレクトリに移動しwgetなどでMIBをダウンロードしていきます。

wget https://www.circitor.fr/Mibs/Mib/S/xxxx.mib

たったこれだけでエラーがどんどん減っていくはずです。

MIBの探し方

1. MIBの一覧があるWebサイトにアクセス

以下のWebサイトが非常に丁寧にMIBをまとめてくれています。

2. エラーとなっているMIBを検索

今回だと「SNMP-FRAMEWORK-MIB」「SNMP-VIEW-BASED-ACM-MIB」の2つを検索します。

3.  該当ページにアクセス

今回の例だと上記URLになります。

4. Webページの一番上にあるMIBをwgetなどでダウンロードする

$ $ cd /usr/share/snmp/
$ wget https://www.circitor.fr/Mibs/Mib/S/SNMP-FRAMEWORK-MIB.mib

こんな感じのコマンドになります。

まとめ

これでsnmpwalkやsnmpgetを実施するたびに発生する大量のエラーの大半は回避できると思います。
今回はubuntu20.04で検証していますが思っているよりも最初に入っているMIBが少なく大量のエラーが発生する事態となり、今回の記事作成に至りました。

snmpは監視として非常に大事な部分ですので効率よく、楽しく運用していきましょう!

最新情報をチェック!