SNMP について話すときに使用される用語の一部、特に MIB の責任者がエージェントなのか管理ステーションなのかを理解するのが困難です。
簡単なシナリオを見てみましょう:
- 私は既知のOID(CPU使用率など)でLinuxマシンを監視します
- CPU 使用率 OID の SNMP 要求を送信すると、その要求はエージェントと管理ステーションのどちらが処理するのでしょうか?
- MIB からデータを読み取るだけであれば、ここでのエージェントの役割は何でしょうか?
- エージェントには get 用の同期 API がありますが、ストレージに直接アクセスすると、なぜこの get が必要になるのでしょうか。
この単純な CPU OID の例を理解するのを手伝ってくれる人はいますか? そこで何が起こっているのでしょうか?
答え1
実のところ、とても簡単です。
SNMP エージェントは管理対象のマシン上で実行され、任意の方法 (エントリの読み取り/proc
、IPC 経由でのプロセスとの通信、ファイルからの読み取り、または他の任意の方法) でマシンからデータを読み取る (および設定する) ことができます。次に、このデータを 1 つ以上の定義ファイル (MIB) に従って適切に構造化された方法で表現します。
管理ステーション (または SNMP クライアント) は、この MIB に従ってエージェントと通信し、エージェントからデータを読み取る (または設定する) ことができます。
さらに、一部のエージェント (通常は管理ステーションから要求された場合にのみ動作します) は、何らかの条件が満たされたときに管理ステーションにメッセージを送信してそのことを通知するように設定できます。これは SNMP トラップと呼ばれます。
CPUの例:
- エージェントはマシン上で実行されており、システム データを読み取ることができます。
- 管理ステーションは、CPU 負荷 OID のポーリング エージェントです。
- エージェントは、この OID のデータを取得する方法を検索し、データ ポイント (CPU 負荷) を読み取って、それを管理ステーションに送り返します。