第2章 - システムリソース管理 - SNMP

|

概要

SNMP:Small Network Management Protocol は、ネットワーク機器の監視を行う仕組み。 Ver.1, 2c, 3 があり、3のみ暗号化に対応している。
管理情報を発信するエージェント(サーバ:ネットワーク機器)と、 情報を収集・管理するマネージャ(クライアント:管理用システム)からなる。
監視範囲は IPアドレス(ネットワーク)で管理され、それにコミュニティ名を付ける事ができる。 エージェントによるアクセスはコミュニティ名によって行われるため、 事実上パスワードとして利用される

監視可能な情報は、MIB: Manegement Information Base / 管理情報ベース で定義されている。
各要素(オブジェクトと呼ぶ)はツリー構造になっており、番号が付与されている。 この名称を OID: Objeect ID とよび、ドットで区切って表記する。
* OID は ISO と ITU(旧CCITT) が協力し通信規約で必要な要素を定義している。
OID Repository

RPCで規定された標準MIB以外に、ベンダーが独自に定義したプライベートMID, 拡張MIBも存在する。
以下は標準 MIB の例

# snmptranslate -Tp
+--iso(1)
   |
   +--org(3)
      |
      +--dod(6)
	 |
	 +--internet(1)
	    |
	    +--directory(1)
	    |
	    +--mgmt(2)
	    |  |
	    |  +--mib-2(1)
	    |	  |
	    |	  +--system(1)
	    |	  |  |
	    |	  |  +-- -R-- String	sysDescr(1)
	    |	  |  |	      Textual Convention: DisplayString
	    |	  |  |	      Size: 0..255
	    |	  |  +-- -R-- ObjID	sysObjectID(2)
	    |	  |  +-- -R-- TimeTicks sysUpTime(3)

例) sysUpTime の表記方法

SNMP Agent インストール

	# yum -y install "net-snmp*"
	# /etc/init.d/snmpd start

SNMP Agenet 設定

/etc/snmp/snampd.conf を編集し、コミュニティおよび提供するオブジェクトを定義。
  1. コミュニティの設定(com2sec)
    # com2sec	セキュリティ名	アクセス許可ホスト・ネット	コミュニティ名
    com2sec 	notConfigUser	192.16.151.0/24(自Net) 	lael
    
  2. グループ定義(group)
    # group 	グループ名	モデル	セキュリティ名
    group		notconfigGroup	v2c	notCnofigUser
    
  3. 監視項目の設定(view)
    # view	ビュー名	incl/excl	サブツリー		[ マスク ]
    view	systemview	include 	.1.3.6.1.2.1.1
    					(iso.org.dod.internet.mgmt.mib-2.system)
    view	systemview	include 	.1.3.6.1.2.1.25.1.1
    					(iso.org.dod.internet.mgmt.mib-2.host)
    
  4. グループへの権限譲渡(access)
    #access  グループ名  コンテキスト  モデル  レベル  プリフィクス  読み  書き  通知
    access  notConfigGroup  ""  any  noauth  exact  systemview  none  none

オブジェクトの参照


実行例
$ snmpwalk -v2c 192.168.151.2 -c lael
(iso.org.dod.internet.mgmt.mib-2.system の値)
SNMPv2-MIB::sysDescr.0 = STRING: Linux cent580.ycos.net 2.6.18-308.13.1.el5.centos.plus #1 SMP Tue Aug 21 18:54:41 EDT 2012 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (65107) 0:10:51.07
SNMPv2-MIB::sysContact.0 = STRING: Root  (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: cent580.ycos.net
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (23) 0:00:00.23
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.7 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.8 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.6 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.8 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (23) 0:00:00.23
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (23) 0:00:00.23
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (23) 0:00:00.23
(iso.org.dod.internet.mgmt.mib-2.host の値)
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (90482) 0:15:04.82
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

SNMP詳細

エージェントとマネージャ間のやりとりは、PDU:Protocol Data Unit で行われる。

マネージャ → エージェントのSNMPメッセージPDU
GetRequest指定したオブジェクトの情報取得要求
GetNextRequest指定した階層オブジェクトの情報継続取得要求
SetRequest指定したオブジェクトの情報変更要求
マネージャ ← エージェントのSNMPメッセージPDU
GetResponseマネージャからの要求応答
Trap自動的な情報の通知
SNMP データフォーマット
IP
Header
UDP
Header
SNMP Message
SNMP
Ver.
CommunityPDU
(Type, Req.ID, Err, OID, Value...)
MIB グループ。MIBツリーの特定位置から下位にあるオブジェクトの集合。
例えば、既出の sysUpTime は、iso.org.dod.internet.mgmt.mib-2.system 下にあり、
この時、mib-2までを省略し、system グループと呼ぶ。
主なグループ iso.org.dod.internet.mgmt.mib-2.
No.OID NameDescription
1systemシステム情報、ホスト名、稼働時間、連絡先など
2interfacesNIC状況、送受信データ数、MTU値など
4ipIP統計、Gateway有無、TTL値、IPアドレスなど
5icmpICMP統計、ICMP総数、Recho Reply受信数など
6tcpTCP統計、接続ステータス、ポート番号など
7udpUDP統計、データグラム送受信総数、エラー数など
11snmpSMTP統計、各種リクエスト送受信数など
25snmpシステム統計、リソース監視、設定内容など

MRTG

パッケージ mrtg をインストールすると、/etc/httpd/conf.d/mrtg.conf も作成される。
但し、この Directory ディレクティブの記述を修正する必要がある。

修正前)	<Directory  /mrtg>
修正後)	<Directory  "/var/www/mrtg">
Sample Image / http://localhost/mrtg/