2. SNMPの基礎知識
SNMPはネットワークシステムの監視・管理をするためのインターネット標準プロトコルです。SNMPはネットワークに接続されている機器を、ネットワーク経由で管理します。SNMPは「RFC 1157」で定義されており、現在ネットワークシステムの管理において最も普及しているプロトコルと言えます。
2.1. エージェントとマネージャ
SNMPは管理対象となる機器に常駐するエージェントと、それらを管理する側の機器上に存在するマネージャというプロセス(Windowsで言うところのサービス)を利用します。
一般的にはエージェントはデーモン(常駐プロセス)、マネージャはアプリケーションやコマンドで提供されます。SNMPはUDPの上位にマッピングされているプロトコルで、ポート番号が決まってます(161番と162番)。マネージャとエージェントの間でやりとりされる情報の区分は次の3つに分類できます。
- 情報の要求と応答(get-request)
マネージャからエージェントに監視対象機器の情報を要求します。エージェントは要求された情報を取得してマネージャに応答します。
- 情報の設定要求と応答(set-request)
マネージャからエージェントに監視対象機器の設定変更を要求します。エージェントは要求された設定変更を実行し、結果をマネージャに応答します。
- 状態変化の通知(Trap)
エージェントから監視対象機器の状態変化をマネージャに一方的に通知します。
2.2. MIB(Management Information Base)
上記から、SNMPはマネージャとエージェントによって構成され、3種類の情報を送受信する機能のみ実装されたプロトコルです。
では実際にSNMPは機器からどのような情報をどのようにして取得するのでしょうか?
エージェントは監視対象機器の情報を、MIBと呼ばれる「管理情報ベース」を参照して取得します。マネージャはエージェントがMIBを通して管理している情報を受け取ることで、現在の監視対象機器の状態を判断します。そのためマネージャは(ひいてはSNMPの利用者は)エージェントが管理しているMIBの構成を理解している必要があります。
つまりSNMPは、MIBに規定されている情報を、エージェントが機器やOSなどから取得し、それをマネージャに通知するために作成されたプロトコルと言えます。MIBはオブジェクト識別子(以下、OI)とオブジェクトID
(以下、OID)から構成されており、ツリー状で管理されています(これをMIBツリーと言います)。
下記は一部を抜き出した物です。本当はもっと大きく、非常に深いです。
・┬itu-t/ccitt/itu-r(0) ├joint-iso-itu-t/joint-iso-ccitt(2) └iso(1)┬standard(0) ├registration-authority(1) ├member-body(2) └org(3)┬SIRENE(French national business register)(2) ├dod(US Department of Defense)(6) -> 【1】 ├ECMA(European Computer Manufacturers Association)(12) └Open Software Foundation(22) 【1】->internet(1) ├directory(1) ├management(mgmt)(2)──┬mib-2(1) ──────┬system(1) ├experimental(3) ├NSMIB appl OID(27) ├interfaces(2) │ └ipMIB(148) ├ip(4) ├private(4) ├icmp(5) │ └IANA-registered Private Enterprises(1) ├tcp(6) ├security(5) ├IBM(2) ├udp(7) ├snmpv2(6) ├Cisco(9) ├host(25) └mail(7) ├HP(11) ├ethernet(26) ├Sun(42) ├MTA(28) ├MS(311) ├ifMib(31) ・・・ ・・・ ├ucdavis(2021) ・・・
あるOIの配下には別のOIが存在しているか、実際の値を定義しているインスタンスが存在します。インスタンスとは値に付加された名前であり、一意のOIによって管理され、一意のデータタイプ(int/stringなど)を持ちます。さらにMIBには以下の2つの分類に分けられます。
1. 標準MIB
TCP/IPで通信する装置が標準的に実装するべきMIBで、mib-2と呼ばれるもの。加えてRFCで標準化され、ベンダーに依存しない装置およびソフトウェアなどの管理用MIB定義。以下は代表的な標準MIBから取得できる情報の、ほんの一例です。
・iso(1)─org(3)─dod(6)─internet(1) ├mgmt(2) │ └mib-2(1) │ └mib-2(1) ┬system(1) -> 1 │ ├interfaces(2) -> 2 │ └host(25) │ └hrStorageTable(3) -> 3 │ │ │ └private(4) └enterprises(1)─ucdavis(2021) ├prTable(2) -> 4 ├memory(4) -> 5 └systemStats(11) -> 6
- mib: .1.3.6.1.2.1.1 / system
システム情報。監視対象機器の名前や設置場所に関する情報を取得。
- mib: .1.3.6.1.2.1.2 / interfaces
インターフェイスに関する情報。トラフィック量監視ではこの情報を利用。
- mib: .1.3.6.1.2.1.25.3 / hrStorageTable
RAM/Swap/HDDに関する統計情報。ディスク消費量監視にはこのデータを利用する。
- mib: .1.3.6.1.4.1.2021.2 / prTable
プロセス情報。特定プロセスの起動プロセス数を監視する場合はこの情報を利用。監視対象プロセスを登録する必要あり(別章で説明します)。
- mib: .1.3.6.1.4.1.2021.4 / memory
メモリに関する情報。
- mib: .1.3.6.1.4.1.2021.11 / systemStats
主にCPUに関する情報。
2. ベンダー拡張MIB(拡張MIB)
各ベンダーが自社製品の管理のために定義したMIB。基本的に企業が独自のMIBを定義するには、IANAから企業番号を取得し、OID=.1.3.6.1.4.1 以下に拡張します。実際にはすべてのOI、すべてのインスタンスを理解する必要はなく、管理したい・参照したい項目を調べ、それだけを参照するように運用します。