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 つが必要です。
- その情報を取得する方法 (スクリプト、プログラムなど)
- その情報 (OID) を格納する場所
(一部の SNMP デーモンでは、OID をマッピングする MIB ファイルも必要になる場合があります)
情報を取得するには、OIDを知る必要があります。これは数値OIDまたはMIBファイルからの「フレンドリ」名のいずれかです。SNMP の クライアント。
SNMP「ブラウザ」には通常、MIB ファイルが必要です。MIB ファイルがないと、意味のない数字のリストしか表示できないためです。
あなたの質問に対する答えは「必要MIB ファイルは、SNMP とやり取りする必要がある人にとって役立つだけです。」
あなたの例(キューの長さの報告)を見ると、あなたが気に入っているチュートリアルから、あなたが使用しているものnet-snmp
(UCD-SNMP)のように思えます。
net-snmp
この種の機能のための組み込み機能が含まれています。マニュアル ページとサンプル構成ファイルを読んでください(exec
外部スクリプトを実行するための指示に特に注意してください。通常は、キューの長さを印刷するスクリプトを実行し、監視ソフトウェア/SNMP クライアントでその OID を照会します)。