はじめに
この連載では監視用プロトコルとして広く知られているSNMPについて設定方法などを交えて説明していきます。今回はSNMPの代表的な機能の一つであるTrapの設定を行います。
構築環境はFedora7(2.6.23.17-88.fc7)、32bit、glibc-2.6-4、gcc-4.1.2を使用しています。
これまでの記事
- 第1回:net-snmpについて(基礎知識)
- 第2回:net-snmpについて(環境構築)
- 第3回:net-snmpについて(機器管理)
6. Trapについて
SNMPにおけるTrapとは、エージェントからマネージャに対し一方的に通知する機能を指します。Trapを発生させる条件を満たすと、エージェントはマネージャに対しTrap通知を行います。マネージャはTrapを受信すると、例えばメールを配信するとかログファイルに記載する等、受信内容を解析し、あらかじめ決められた処理を行います。エージェントが緊急事態をマネージャに通知する機能とも言えます。
ただし、Trapに頼る監視は避けた方が良いでしょう。Trapは(というかSNMPは)UDPプロトコルを使用しています。UDPはTCPと違い、パケットが相手まで届くか確認しないプロトコルで、取りこぼしが発生する可能性があります。基本的にはget-requestによって定期的な監視を行うことが重要です。
この章では、net-snmpにおけるTrapの送信方法について言及していきます。まずはTrapを通知できる環境を作成します。
6.1 エージェント環境構築
エージェント側の設定(net-snmp)は単純で、snmpd.conf に記述するだけです。下記を snmpd.conf に追記してください。
trapcommunity localcom trapcommunity securecom trap2sink localhost localcom trap2sink 192.168.1.5 securecom createUser _internal MD5 "the first sign of madness" iquerySecName _internal rouser _internal monitor -u _internal -r 30 "prErrorFlag" prErrorFlag != 0
- trapcommunity
Trapを発生させるコミュニティ名です。
- trap2sink
Trapが発生した際にコミュニティごとにどこへ送信するかを決めています。
- createUser, iquerySecName, rouser
ユーザを作成していますが、これはTrapを発生させるために特定オブジェクトを監視するためのユーザの設定です。net-snmpで自動的にTrapを発生させるために必要な処理とご理解ください。なお、MD5以降の文字列はパスワードです。
- monitor ...
Trapを発生させる条件になります。監視ユーザ、監視間隔、Trap条件などを記述があります。
上記の場合はprErrorFlagが0で無い場合にTrapをlocalhostと192.168.1.5 に送信することを表しています。記述後、snmpd.confを保存し、snmpd
を restart
します。
% service snmpd restart snmpd を停止中: [ OK ] snmpd を起動中: [ OK ] %
httpd
を停止させると、TWSNMPの画面にてTrapを受信した旨、確認できるはずです。