2

最近、NMS システム用の MIB ファイルを作成していたときに、Linux マシンに MIB を展開してクエリを実行した後、末尾に 101.1 を追加する必要があることに気付きました。標準の Linux mib については、.0 のみを追加する必要があります。.0 ではなく 101.1 で値が返される理由を理解できません。

たとえば、Linux MIB でこれを行うと、値が得られます

snmpget -v 2c -c public localhost 1.3.6.1.2.1.1.3.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (105543) 0:17:35.43

しかし、私のmibが機能するには、101.1を追加する必要があります

snmpwalk -v 2c localhost -c public .1.3.6.1.4.1.****.1.2.3.101.1 
SNMPv2-SMI::enterprises.****.1.2.3.101.1 = STRING: "388 MB"

MIB を使って散歩すると、次のようになります。

snmpwalk -v 2c localhost -c public .1.3.6.1.4.1.****.1.2.3

SNMPv2-SMI::enterprises.****.1.2.3.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.****.1.2.3.2.1 = STRING: "getSystemMemoryUsage.sh"
SNMPv2-SMI::enterprises.****.1.2.3.3.1 = STRING:
"/opt/nagios/plugins/fetch_scripts/System/getSystemMemoryUsage.sh"
SNMPv2-SMI::enterprises.****.1.2.3.100.1 = INTEGER: 0
SNMPv2-SMI::enterprises.****.1.2.3.101.1 = STRING: "388 MB"
SNMPv2-SMI::enterprises.****.1.2.3.102.1 = INTEGER: 0
SNMPv2-SMI::enterprises.****.1.2.3.103.1 = ""

MIB でこのような動作が行われる理由と、MIB が Linux Mib のように動作するようにするには、最後に .0 を追加して値を取得する必要があるため、アドバイスをいただけますか。OBJECT TYPE は、すべてのスカラーです。

よろしくお願いします

4

1 に答える 1

4

MIB 命名法は、テーブルの行および非表形式のスカラーとして表されるデータをサポートします。スカラーとして表示されるデータは、OID.0 インデックスを使用してアクセスされます。「.0」の部分は、システム内の単一のオブジェクト インスタンスであるスカラー オブジェクトへのアクセスを示します。テーブルには、列 (​​各列は何らかのデータを表す) と行 (各行はテーブル インスタンス - そのテーブルをサポートする何らかのエンティティを表す) が含まれます。

あなたの例では、エンタープライズ MIB のいくつかのテーブルにアクセスしようとしています。このテーブルにはインデックスが含まれています (1 つまたは複数のインデックス付き MIB テーブルが存在する場合があります)。そのテーブルで最初に利用可能なインデックスを決定するには、次の方法で snmpgetnext コマンドを開始できます。

snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3

また

snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3.0

また

snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3.0.0

上記のコマンドはすべて、最後の 2 つの OID 部分 (.0.0) を更新することにより、最初の既存の行インスタンスを提供します。これら 2 つの OID を明示的に指定する必要はありません。したがって、null-index (.0) を 1 つだけ使用することも、まったく指定する必要がないこともあります。

これらのテーブルのインデックスがどのように記述されているかを理解するには、Enterprise MIB を参照する必要があります。この OID で記述されたテーブルを見つけてください: .1.3.6.1.4.1. * *.1.2.3 およびインデックス スキームと、これらのインデックスが表すものについて学習します。適切に作成された MIB には、この情報が含まれている必要があります。

解釈は次のようになります。

  • *.1.1 = 1 - エンティティ インデックス 1 の id=1 のデータ列
  • *.2.1 = "getSystemMemoryUsage.sh" - スクリプト名を表すエンティティ インデックス 1 の id=2 のデータ列 (STRING 構文)
  • *.3.1 = "/opt/nagios/plugins/fetch_scripts/System/getSystemMemoryUsage.sh" - 完全なスクリプトのパスを表すエンティティ インデックス 1 の id=3 のデータ列 (STRING 構文)
  • *.100.1 = 0 - 何らかの INTEGER 値を表すエンティティ インデックス 1 の id=100 のデータ列など...

MIB 設計者が将来 .3 から .100 の間にいくつかの列を追加する予定である場合、列のインデックス (.1、.2、.3、.100、.101 ...) にギャップが含まれる場合があります。または単にエンティティ インデックス 1 はこれらの列をサポートしていません (MIB で定義されている場合)。空の列をスキップできます。

スカラー オブジェクトとカラム オブジェクトの違いについて知りたい場合は、RFC1212を参照してください。

于 2012-11-18T09:43:32.627 に答える