特定の(この場合はビジネスクリティカルな)ソフトウェアに問い合わせるためのベンダーからのMIBファイルがあります。
リクエストでsnmptable
を実行すると、応答としてMAGIC-MIB::queryRtTable: No entries
が返されますが、wiresharkで見ると、wiresharkが応答を送信しているのがわかります。
これがwiresharkで応答を送信するサーバーです。
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のエラーだと思いますが、どこから始めればいいのかわかりません。
それはソフトウェアのSNMPエージェントのバグであることが判明しました。OID要求すると、常に同じものが返されます。つまり、それがOID収集したいのですが、すばらしいです。他のデータが必要な場合は、残念です。