web-dev-qa-db-ja.com

snmpwalkを使用したSNMPMIBのトラブルシューティング

特定の(この場合はビジネスクリティカルな)ソフトウェアに問い合わせるためのベンダーからのMIBファイルがあります。

リクエストでsnmptableを実行すると、応答としてMAGIC-MIB::queryRtTable: No entriesが返されますが、wiresharkで見ると、wiresharkが応答を送信しているのがわかります。

これがwiresharkで応答を送信するサーバーです。

Wireshark capture of SNMP response

MIBの構築に関しては無知なので、MIBの関連部分であると私が望むものを以下に投稿しました。

MAGIC-MIB DEFINITIONS ::= BEGIN

IMPORTS
        enterprises
                FROM RFC1155-SMI
        OBJECT-TYPE
                FROM RFC-1212  
        DisplayString
                FROM RFC1213-MIB;

magic         OBJECT IDENTIFIER ::= {enterprises 15687}
manage          OBJECT IDENTIFIER ::= {magic 2}
query           OBJECT IDENTIFIER ::= {magic 3}

queryRtTable OBJECT-TYPE
             SYNTAX  SEQUENCE OF QueryRtEntry
             ACCESS  not-accessible
             STATUS  mandatory
             DESCRIPTION
                     "The list of loaded enterprise servers"
             ::= { query 3 }

          queryRtEntry OBJECT-TYPE
              SYNTAX  QueryRtEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The enterprise server entry"
              INDEX   { entServerEntryIndex }
              ::= { queryRtTable 1 }

          QueryRtEntry ::=
              SEQUENCE {
                              entServerEntryIndex
                      INTEGER,
                              entServerHost
                      DisplayString,
                              entServerPort
                      INTEGER,
                               openedApplication
                      DisplayString , 
                               entPriority
                      INTEGER,
                               runningThreads
                      INTEGER,
                               peakThreads
                      INTEGER,
                               runningContexts
                      INTEGER,
                               peakContexts
                      INTEGER,
                               requestsServed
                      INTEGER,
                               executionErrors
                      INTEGER
              }

          entServerEntryIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..100000)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A unique identifier for an enterprise server"
              ::= { queryRtEntry 1 }

          entServerHost OBJECT-TYPE
              SYNTAX  DisplayString
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The enterprise's Host name"
              ::= { queryRtEntry 2 }

           entServerPort OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The enterprise server's port number"
              ::= { queryRtEntry 3 }

          openedApplication OBJECT-TYPE
              SYNTAX  DisplayString
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The application that is running on the enterprise server."
              ::= { queryRtEntry 4 }

           entPriority OBJECT-TYPE
              SYNTAX  INTEGER 
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The priority of the enterprise server"
              ::= { queryRtEntry 5 }

           runningThreads OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The enterprise server's running thread counter"
              ::= { queryRtEntry 6 } 

           peakThreads OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The enterprise server's peak thread counter"
              ::= { queryRtEntry 7 }

           runningContexts OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The enterprise server's running context counter"
              ::= { queryRtEntry 8 } 

           peakContexts OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The enterprise server's peak context counter"
              ::= { queryRtEntry 9 }

           requestsServed OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of requests served"
              ::= { queryRtEntry 10 }

           executionErrors OBJECT-TYPE
              SYNTAX  INTEGER
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of execution errors"
              ::= { queryRtEntry 11 }   

データが送信されているのに、なぜsnmptableがデータを返さないのかを調べるために、どこを見ればよいのでしょうか。 MIBのエラーだと思いますが、どこから始めればいいのかわかりません。

1
Mark Henderson

それはソフトウェアのSNMPエージェントのバグであることが判明しました。OID要求すると、常に同じものが返されます。つまり、それがOID収集したいのですが、すばらしいです。他のデータが必要な場合は、残念です。

1
Mark Henderson