web-dev-qa-db-ja.com

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

SNMPといくつかの質問を読んだ後、ここで役立つと思います。デバイスへのSNMPサービスとしてのエージェントの役割を理解していると思います(SQLと同様に、ストレージへのAPIです)。

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

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

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

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

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

5

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ファイルは[〜#〜]必要ありません[〜#〜]、MIBファイルはSNMPと対話する必要がある人間」。


あなたの例(キューの長さを報告する)をとると、あなたがnet-snmp(UCD-SNMP)を使用しているようにあなたが好きなチュートリアルから聞こえます。
net-snmpには、この種の機能が組み込まれています。マニュアルページと設定ファイルの例を読んでください(外部スクリプトを実行するためのexecディレクティブに特に注意してください:通常キューの長さを出力するスクリプトを実行し、次のようにクエリしますOIDモニタリングソフトウェア/ SNMPクライアント)

7
voretaq7