SNMPの設定について(MIBについて)

前回は、LinuxサーバへSNMPをインストールする方法やSNMPの設定について載せました。そのなかで、MIBのオブジェクトIDについての設定箇所があったのですが、今回はそのMIBについてです。MIBについての概要とSNMPエージェントとの会話方法についてまとめました。

MIBの概要

MIB情報は、ツリー構造になっていてそれぞれの節に番号が付いています。この番号にピリオドを付けたものをOID(Object ID)と呼びます。このOIDを使って取得したい情報を指定します。例えば、CPUの使用率(1分間の平均)を取得する場合のOIDは、次のようになります。

.1.3.6.1.4.1.2021.10.1.5.1

また、このOIDに英語名を当てはめた表現方法をMIBシンボル名と呼びます。先ほどのOIDをMIBシンボル名で表すと次のようになります。

.iso.org.dod.internet.private.enterprises.ucdavis.laTable.laEntry.laLoadInt.1

それぞれの変換には、「snmptranslate」を使います。OIDからMIBシンボル名への変換は、次のようにします。

user01@kurobox:~$ snmptranslate .1.3.6.1.4.1.2021.10.1.5.1
UCD-SNMP-MIB::laLoadInt.1

MIBシンボルからOIDへの変換は、以下のようにします。

user01@kurobox:~$ snmptranslate -On UCD-SNMP-MIB::laLoadInt.1
.1.3.6.1.4.1.2021.10.1.5.1

詳しく調べたい場合は、次のようにします。最終行には、MIBシンボル名が表示されます。

uesr01@kurobox:~$ snmptranslate -Td .1.3.6.1.4.1.2021.10.1.5.1
UCD-SNMP-MIB::laLoadInt.1
laLoadInt OBJECT-TYPE
  -- FROM       UCD-SNMP-MIB
  SYNTAX        Integer32
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION   "The 1,5 and 10 minute load averages as an integer.
         This is computed by taking the floating point
         loadaverage value and multiplying by 100, then
         converting the value to an integer."
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) ucdavis(2021) laTable(10) laEntry(1) laLoadInt(5) 1 }

また、ツリー構造でOIDを構成を確認したい場合は、次のコマンドを使います。このコマンドは、引数のOID以下の構造をツリー状で表示します。

user01@kurobox:~$ snmptranslate -Tp .1.3.6.1.4.1.2021.10.1
+--laEntry(1)
   |  Index: laIndex
   |
   +-- -R-- Integer32 laIndex(1)
   |        Range: 0..3
   +-- -R-- String    laNames(2)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -R-- String    laLoad(3)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -R-- String    laConfig(4)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -R-- Integer32 laLoadInt(5)
   +-- -R-- Opaque    laLoadFloat(6)
   |        Textual Convention: Float
   |        Size: 7
   +-- -R-- Integer32 laErrorFlag(100)
   +-- -R-- String    laErrMessage(101)
            Textual Convention: DisplayString
            Size: 0..255

SNMPエージェントとの会話方法

実際に、エージェントから情報を取得するには、2つのコマンドを使います。「snmpwalk」と「snmpget」です。「snmpwalk」は、引数のOIDとその下位情報をすべて取ってきます。引数の指定は、OIDの変わりにMIBシンボル名でも可能です。

user01@kurobox:~$ snmpwalk -c localpasswd -v 1 localhost .1.3.6.1.4.1.2021.10.1.5
UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 35
UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 25
UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 26

「snmpget」は、引数に指定したOIDの情報を取得します。引数の指定は、OIDの変わりにMIBシンボル名でも可能です。OIDの指定には、ルートの途中まででなく最終的に値を得できる終端のOIDをしてしなければなりません。

user01@kurobox:~$ snmpget -c localpasswd -v 1 localhost .1.3.6.1.4.1.2021.10.1.5.1
UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 55

ちなみに、引数に途中のOIDを指定した場合は、次のようなエラーがでます。

user01@kurobox:~$ snmpget -c localpasswd -v 1 localhost .1.3.6.1.4.1.2021.10.1.5
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: UCD-SNMP-MIB::laLoadInt
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする