1

SNMPの初心者ですが、SNMPとPYSNMPを使用して簡単な監視アプリをいくつか作成します

カスタム MIB を使用してエージェントを監視したい (MIB を実行すると、PYSNMP で動作しないため)、PYSNMP のドキュメントを読みましたが、役に立たないようです。

カスタム MIB PYSNMP を簡単に作成する方法を教えてもらえますか? だから私はマネージャーとエージェント側の両方でそれを使うことができます:)

ありがとうございました


回答ありがとうございます 私はすでにそれらのツッツを読みましたが、私の mib はまだターゲットにヒットできません。

パーティションの合計ディスクを読み取りたいので、MIB コードは次のとおりです。

DISKTOTAL-MIB DEFINITIONS ::= BEGIN

IMPORTS
        OBJECT-TYPE, Integer32, NOTIFICATION-TYPE
                     FROM SNMPv2-SMI
;

internet OBJECT IDENTIFIER ::= { iso(1) org(3) dod(6) 1 }
enterprises OBJECT IDENTIFIER ::= { internet private(4) 1 }
ucdavis OBJECT IDENTIFIER ::= { enterprises 2021 }
diskcheck OBJECT IDENTIFIER ::= { ucdavis 9 }
snmpdiskcheck OBJECT IDENTIFIER ::= { diskcheck 1 }
totaldisk OBJECT IDENTIFIER ::= { snmpdiskcheck 6 }

diskTotal OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Total size of disk on partition."
    ::= { totaldisk 1 }

END

このコードを生成した後、これがpyのMIBです

# PySNMP SMI module. Autogenerated from smidump -f python DISKTOTAL-MIB
# by libsmi2pysnmp-0.1.3 at Wed Jul  3 01:30:48 2013,
# Python version sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0)

# Imports

( Integer, ObjectIdentifier, OctetString, ) = mibBuilder.importSymbols("ASN1", "Integer", "ObjectIdentifier", "OctetString")
( NamedValues, ) = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues")
( ConstraintsIntersection, ConstraintsUnion, SingleValueConstraint, ValueRangeConstraint, ValueSizeConstraint, ) = mibBuilder.importSymbols("ASN1-REFINEMENT", "ConstraintsIntersection", "ConstraintsUnion", "SingleValueConstraint", "ValueRangeConstraint", "ValueSizeConstraint")
( Bits, Integer32, Integer32, MibIdentifier, NotificationType, MibScalar, MibTable, MibTableRow, MibTableColumn, TimeTicks, ) = mibBuilder.importSymbols("SNMPv2-SMI", "Bits", "Integer32", "Integer32", "MibIdentifier", "NotificationType", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn", "TimeTicks")

# Objects

internet = MibIdentifier((1, 3, 6, 1))
enterprises = MibIdentifier((1, 3, 6, 1, 4, 1))
ucdavis = MibIdentifier((1, 3, 6, 1, 4, 1, 2021))
diskcheck = MibIdentifier((1, 3, 6, 1, 4, 1, 2021, 9))
snmpdiskcheck = MibIdentifier((1, 3, 6, 1, 4, 1, 2021, 9, 1))
totaldisk = MibIdentifier((1, 3, 6, 1, 4, 1, 2021, 9, 1, 6))
diskTotal = MibScalar((1, 3, 6, 1, 4, 1, 2021, 9, 1, 6, 1), Integer32()).setMaxAccess("readonly")
if mibBuilder.loadTexts: diskTotal.setDescription("Total size of disk on partition.")

# Augmentions

# Exports

# Objects
mibBuilder.exportSymbols("DISKTOTAL-MIB", internet=internet, enterprises=enterprises, ucdavis=ucdavis, diskcheck=diskcheck, snmpdiskcheck=snmpdiskcheck, totaldisk=totaldisk, diskTotal=diskTotal)

しかし、私が snmpget を呼び出そうとしたとき: snmpget -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.6.1

私が見つけた:

iso.3.6.1.4.1.2021.9.1.6.1 = No Such Instance currently exists at this OID

ありがとうございました

4

1 に答える 1

1

PySNMP を使用すると、MIB テキスト ファイルが Python コードに変換され、SNMP アプリのマネージャー側とエージェント側の両方で機能します。変換は、次のような smidump & libsmi2pysnmp ツールで実行されます。

$ cat YOUR-MIB.txt | smidump -f python | libsmi2pysnmp > YOUR-MIB.py

小さな自動化スクリプト (tools/build-pysnmp-mib) については、PySNMP ディストリビューションを参照してください。

Python 化された MIB を取得すると、マネージャー側でそれを視覚化の目的で使用できます (OID を言葉で表し、値を整形します)。エージェント アプリケーションは、管理するホスト システムの値にアクセスできるリーフ オブジェクトを追加することで、Python 化された MIB を拡張できます。

エージェント側の実装に関する同様の質問と、 PySNMP MIB 変換プロセスに関するブログ投稿があります。

マネージャー アプリとエージェント アプリの両方を実装する必要がありますか?

于 2013-07-02T06:36:56.203 に答える