SNMP エージェントに MIB ファイルが必要なのはなぜですか?

SNMP エージェントに MIB ファイルが必要なのはなぜですか?

SNMP について調べ、ここでのいくつかの質問が役に立った後、デバイスへの SNMP サービスとしてのエージェントの役割を理解できたと思います (SQL のように、これはストレージへの API です)。

SQL クエリを実行すると、SQL エンジンがすべての作業を実行し、結果を返します。保存方法や保存場所を意識する必要はありません。

しかし、MIBは実際のストレージではないので、エージェントの役割は何でしょうか?
エージェントがMIBを登録するだけであれば、チュートリアルつまり、ハンドラーとしてはまったく使用されず、ハンドラーをバイパスせずに設定してそこにアクセスできる物理ストレージがあることを意味します。チュートリアルでは、次のようにします。

netsnmp_register_int_instance("my example int variable",
                                  my_registration_oid,
                                  OID_LENGTH(my_registration_oid),
                                  &example1, NULL);

呼び出しを処理するためのハンドラーは必要ありません。

たとえば、アプリケーションの保留中の要求キューを監視したいので、application_pending_request のすべての SNMP 要求がキューに対して発行され、キューの深さを返すエージェントが必要です。結果を取得するにはアプリケーション キューをポーリングするだけでよいのに、実際の MIB が必要なのはなぜですか?

答え1

あなたは、SNMP の仕組みについて根本的に誤解しています。簡単に比較してみましょう。SNMP MIBはホスト名のようなものMIB は OID をフレンドリ名にマッピングします (例:
.1.3.6.1.2.1.1.1.0=> SNMPv2-MIB::sysDescr.0=> Host Description(uname 出力))。

SNMPサーバー(エージェント)から情報を取得するには、その情報しなければならない特定の OID で公開されます。SNMP
デーモンが情報を公開するには、(通常) 次の 2 つが必要です。

  1. その情報を取得する方法 (スクリプト、プログラムなど)
  2. その情報 (OID) を格納する場所
    (一部の SNMP デーモンでは、OID をマッピングする MIB ファイルも必要になる場合があります)

情報を取得するには、OIDを知る必要があります。これは数値OIDまたはMIBファイルからの「フレンドリ」名のいずれかです。SNMP の クライアント

SNMP「ブラウザ」には通常、MIB ファイルが必要です。MIB ファイルがないと、意味のない数字のリストしか表示できないためです。

あなたの質問に対する答えは「必要MIB ファイルは、SNMP とやり取りする必要がある人にとって役立つだけです。」


あなたの例(キューの長さの報告)を見ると、あなたが気に入っているチュートリアルから、あなたが使用しているものnet-snmp(UCD-SNMP)のように思えます。
net-snmpこの種の機能のための組み込み機能が含まれています。マニュアル ページとサンプル構成ファイルを読んでください(exec外部スクリプトを実行するための指示に特に注意してください。通常は、キューの長さを印刷するスクリプトを実行し、監視ソフトウェア/SNMP クライアントでその OID を照会します)。

関連情報