ソリューション
SNMPとは
SNMP(Simple Network Management Protocol)は、UDP/IPベースのネットワーク監視、ネットワーク管理を行うためのプロトコルです。ルータ、スイッチなどのネットワーク機器、WindowsやUNIXサーバなどの状態監視、リソース監視、パフォーマンス監視、トラフィック監視を行うために使用します。一般的に、サーバに対しては、CPU使用率、メモリ使用率、ディスク使用率、プロセス監視、Windowsイベントログ監視、Syslog監視を行います。ネットワーク機器に対しては、各ポート上で送受信されたパケット数、エラーパケット数、ポートの状態(up/down)、およびCPU使用率、メモリ使用率などを監視します。ベンダによっては機器固有の管理項目を公開しているものがあり、きめ細かい監視が可能です。
SNMP バージョン
SNMPには、v1/v2c/v3という3つのバージョンが定義されています。
- SNMPv1 [RFC 1155, RFC 1157] : Get / GetNext / Set / GetResponse / Trapの5つのコマンドが定義されています。
- SNMPv2c [RFC 1901, RFC 1905, RFC 1906] : コマンドのフォーマット(PDU: Protocol Data Unit)が拡張されており、GetBulk, INFORM request, Reportが追加されました。セキュリティレベルとしては、コミュニティベースとなっており、SNMPv1と同等です。
- SNMPv3 [RFC 2576, RFC 3410, RFC 3411, RFC 3412, RFC 3413, RFC 3414, RFC 3415, RFC 3416, RFC 3417, RFC 3418, RFC 3584, RFC 3826] : セキュリティ機能が強化されており、PDUの暗号化が可能です。
SNMP アーキテクチャ
SNMPは、SNMPマネージャとSNMPエージェント間での通信プロトコルです。SNMPマネージャは、SNMPエージェントから送られた管理情報を分かりやすく表示するソフトウェアで、SNMPエージェントは監視される機器上で動作するソフトウェアで管理情報をSNMPマネージャに送信します。SNMPマネージャは、SNMPコマンド(Get/GetNext/GetBulk/Set)を送信します。このコマンドは、管理情報の識別子(OID:Object Identifier)を含んでおり、この識別子で管理情報を一意に識別します。SNMPエージェントはこの識別子に対応した管理情報をSNMPマネージャにGetResponseコマンドで応答します。
- Get Request : 指定した識別子(OID)の管理情報をSNMPエージェントから取得
- GetNext Request : 指定した識別子(OID)の次の管理情報をSNMPエージェントから取 得
- Set Request : SNMPエージェントの制御
- Trap : SNMPエージェントからの状態通知
管理情報
管理情報は、MIB(Management Information Base)として定義されています。MIBは、ASN.1(Abstract Syntax Notation One:抽象構文記法1)という記法を使用して定義されています。一般的なSNMPエージェントは、RFC 1213に定義されたRFC1213-MIB
を管理情報として実装しています。このMIBには、システム情報、インターフェース情報、ARPキャッシュ情報、ICMP/IP/TCP/UDP/SNMPプロトコルに関係する管理情報が定義されています。また、HOST-RESOURCES-MIB
では、ネットワーク機器、サーバのリソース情報(CPU/メモリ/ディスク/プロセス/インストールされているソフトウェアなど)の監視項目が定義されています。MIBは、プレーンテキストで記載されていますが、MIB Browser
というツールを使用することでグラフィカルに表示することが可能です(下図参照)。
SNMP PDUフォーマット
SNMPマネージャは、SNMPコマンド(Get/GetNext/GetBulk/Set)をSNMPエージェントに送信します。SNMPエージェントは、受信したコマンドに対する応答としてGet Responseコマンドを送信します。また、SNMPエージェントは、SNMPマネージャに管理情報に変化があった場合、障害通知を行うためにSNMPトラップ(Trap)を使用しアラームなどの通知を行えます。SNMPv1,SNMPv2cでは、コマンドフォーマットが異なっています。
【SNMPv1】
【SNMPv2】
| フィールド名 | 説明 |
|---|---|
| SNMP Version | SNMPプロトコルバージョン( v1=0, v2c=1, v3=3 ) |
| Community | エージェントに設定されている認証文字列。マネージャは、エージェントに設定されたコミュニティを指定する必要があり、異なる文字列を指定した場合は、SNMPエージェントは応答せずに、予め指定されたIPアドレスにAuthentication Failure Trap(Generic Trap : 7)を送信 |
| PDU TYPE | SNMPコマンドタイプ( Get=a0, GetNext=a1, GetResponse=a2, Set=a3, GetBulk=a5, InfromRequest=a6, SNMPv2-Trap=a7, Report=a8) |
| Request ID | コマンドシーケンス番号。SNMPエージェントは、受信したSNMPコマンドに対するGetResponseに同一のReqest IDを設定。 |
| Error Status | コマンドでは、"0"が設定され、SNMPエージェント上でエラーが発生した場合は、GetResponseにそのエラー番号を設定 |
| Error Index | コマンドでは"0"が設定され、SNMPエージェント上でエラーが発生した場合は、その発生したVariable Bindingsの位置を設定 |
| Variable Bindings | Object IDとその値を設定 |
SNMP v2 Trapでは、ヘッダのフォーマットがv1 Trapから変更されています。ヘッダは、Get/GetNext/Set コマンドと同一になり、Variable Bindingsフィールドの最初の2つに、sysUpTime(SNMPエージェント起動後経過時間)とsnmpTrapOID(トラップOID)が設定されます。
Error Status一覧:
| Error Status | 説明 |
|---|---|
| No Error | エラー無し |
| No Such Name | 指定したOIDに対する値が存在しない |
| Bad Value | 指定した値が正しくない |
| Read Only | ReadOnlyオブジェクトに対して、Setリクエストにて設定を行った場合に発生 |
| Gen Error | その他のエラー |
トラップ番号一覧:
| Generic Type | 説明 |
|---|---|
| Cold Start | エージェントを再起動 システム内の設定値が変更される可能性あり |
| Warm Start | エージェントを再起動 システム内の設定値は変更されない |
| Link Down | 通信インターフェースが停止 |
| Link Up | 通信インターフェースが復旧 |
| Authentication Failure | コミュニティ名が異なるコマンドを受信。 |
| egpNeighborLoss | EGP(Exterior Gateway Protocol)隣接装置がダウン |
| Enterprise Specific | ベンダ定義のトラップ |
SNMPパケットのエンコーディングルール
SNMPコマンド(Get/GetNext/GetBulk/Set)は、BER(Basic Encoding Rule)によりエンコードし、PDUとしてネットワークを介してSNMPエージェントに送付されます。 RFC1213-MIBに定義されているsysDescr(OID : .1.3.6.1.2.1.1.1.0)を取得するためにGet Requestを送信した場合、SNMPマネージャでは以下のようなデータの送受信が行われます。
SNMPマネージャ
ゾーホーコーポレーションは、SNMPマネージャである「 ManageEngine OpManager 【日本語版】」を無料提供しており、ネットワーク監視ツールとして使用することが可能です。スイッチ監視、ルータ監視、CPU監視、メモリ監視、ポート監視、アプリケーション監視、イベントログ監視機能などが、Webベースのクライアントによりネットワーク監視に関する知識がない方でも操作が可能で、簡単に導入できるツールとなっています。その他、日本製の入門用SNMPマネージャ「TWSNMP Manager
」がフリーウェアとして公開されています。また、Open Source Softwareとしては、「OpenNMS」、「Nagios
」などがあります。
これらのツールは、汎用的なツールとして一般的に必要なネットワーク管理およびネットワーク監視機能を標準提供してます。このような標準的な機能に加えて、独自のネットワーク監視機能が必要なユーザもいます。ネットワーク機器ベンダ、通信事業者、テレコムキャリアは、独自の監視ポリシーを持っており、これを実現するためのネットワーク管理システムを独自開発しています。このようなユーザ向けに、ゾーホーコーポレーションでは、ネットワーク監視、ネットワーク管理用Java開発ツール「WebNMS Framework
【日本語版】」)を提供しています。Web NMSは、ネットワーク管理に必要となる共通機能(障害管理、構成管理、性能管理、機密管理)を標準提供し、独自の監視機能を開発するためのJava APIを公開し、容易なカスタマイズを可能としています。装置の管理情報をJavaオブジェクトとしてモデリングするためのツール、SNMP用GUIアプリケーションを開発するためのGUIビルダーツールなどを提供し、アプリケーションのソースコードを自動生成することが可能です。Web NMSは、サーバの分散配置が可能で、大規模ネットワーク管理を行うために必要とされる機能も提供しています。
SNMPエージェント
Windowsでは、サービスとしてSNMPエージェントをインストールすることが可能です。OSのインストール直後は、SNMPエージェントはインストールされていないため、
ユーザでインストール作業を行う必要があります。Linuxでは、オープンソースソフトウェアであるNet SNMPを動作させることが可能です。
また、Agent Toolkit Java Edition
、Agent Toolkit C Edition
を
使用することで独自のSNMPエージェントを開発することが可能です。
監視ツールの利用
監視ツール上に装置登録をすると、まず、Pingによる死活監視を開始します。応答が無かった場合、アラームを生成して監視クライアントにそのメッセージを表示します。次にアラーム監視ということで、装置からのSNMPトラップの受信設定を行います。スイッチ、ルータでは、各ポートのダウンを検出すると、Link Downトラップを送信するように設定できます。これにより、監視ツールがトラップを受信し、アラームメッセージとして監視クライアント(監視マネージャ)上にメッセージを表示します。一般的なツールではアラームアクションの設定が可能で、メールにより管理者に障害通知を行うこともできます。また、ネットワークの構成情報を表示するマップ機能では、アラームが発生した装置の障害状況を色の区別でグラフィカルに表現することが可能です。また、SNMPによるポーリングによりパフォーマンスデータを収集し、レポート生成することでネットワークトラフィックなどの傾向を把握し、異常を事前に検知することが可能です。
SNMP ベースの統合ネットワーク管理ツール
- ManageEngine OpManager:統合ネットワーク管理ツール
関連情報
- SNMPとは [用語 意味解説]
- ネットワーク管理とは [用語 意味解説]
- ITILとは / ITサービスマネジメントとは [用語 意味解説]





