net-snmpによるマネージャ環境構築
6.2 net-snmpによるマネージャ環境構築
TWSNMPは特に何も設定しなくともTrapの受信をしてくれます。更にTrapを受信したらメールを送信する等の設定も、GUIで直観的に分かると思います。
前章でsnmpd.confに追記した設定は、localcomからのTrapはlocalhostへ、つまりエージェントが起動しているノードにTrapを送信することを意味しています。よって、せっかくなのでnet-snmpによるTrap受信環境を構築します。
6.2.1 設定ファイル作成
下記ファイルを作り、 /usr/share/snmp/snmptrapd.conf とします(詳細は別章にて説明します)。ファイルアクセス権は644にしておきます(新規作成したら644になってるはずです)。
authCommunity log,execute,net localcom traphandle default /bin/mail -s "Trap_Happen" root@localhost.localdomain
6.2.2 動作確認
snmptrapdを起動します。下記コマンドを実行、メッセージは特に出力されません。
% /usr/sbin/snmptrapd
インストールした環境で下記コマンドを実行。
% snmptrap -v 2c -c localcom localhost '' systemStats 1 s "this is test Trap"
syslogにTrapを送信した情報が残っているか確認。
% tail /var/log/messages Jul 6 05:24:16 take-04 snmptrapd[2245]: NET-SNMP version 5.4.1.2 Jul 6 05:24:34 take-04 snmptrapd[2245]: take-04 [UDP:[127.0.0.1]:32772]: Trap ,
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (337687)
0:56:16.87, SNMPv2-MIB::snmpTrapOID.0 = OID:
UCD-SNMP-MIB::systemStats, ccitt.1 = STRING:
"this is test Trap."
メールが届いているか確認(sendmail等のデーモンが起動していないとメール配信されません、service sendmail restartで開始してください)。
% service sendmail restart sm-client を停止中: [ OK ] sendmail を停止中: [ OK ] sendmail を起動中: [ OK ] sm-client を起動中: [ OK ] %
% mail N 1 root@localhost.local Sun Jul 6 05:24 20/815 "Trap_Happen" & 1 Message 1: From root@localhost.localdomain Sun Jul 6 05:24:35 2008 Date: Sun, 6 Jul 2008 05:24:34 +0900 From: root <root@localhost.localdomain> To: root@localhost.localdomain Subject: Trap_Happen take-04 UDP: [127.0.0.1]:32772 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:56:16.87 SNMPv2-MIB::snmpTrapOID.0 UCD-SNMP-MIB::systemStats ccitt.1 "this is test Trap." & q %
以上を確認できたら、snmptrapdを落とします。
% kill `pidof snmptrapd`
6.2.3 自動起動設定
snmptrapdの起動を、OSが起動した時に一緒に起動するように設定します。以下のファイル(起動スクリプト)を、/etc/init.d/snmptrapd として保存します。
#!/bin/bash # ucd-snmp init file for snmptrapd # # chkconfig: - 50 50 # description: Simple Network Management Protocol (SNMP) Trap Daemon # # processname: /usr/sbin/snmptrapd # config: /usr/share/snmp/snmptrapd.conf # pidfile: /var/run/snmptrapd.pid # # source function library . /etc/init.d/functions if [ -e /usr/share/snmp/snmptrapd.options ]; then . /usr/share/snmp/snmptrapd.options else OPTIONS="-Ls6 -Lf /dev/null -p /var/run/snmptrapd.pid" fi RETVAL=0 prog="snmptrapd" start() { echo -n $"Starting $prog: " daemon /usr/sbin/snmptrapd $OPTIONS RETVAL=$? echo touch /var/lock/subsys/snmptrapd return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc /usr/sbin/snmptrapd RETVAL=$? echo rm -f /var/lock/subsys/snmptrapd return $RETVAL } reload(){ stop start } restart(){ stop start } condrestart(){ [ -e /var/lock/subsys/snmptrapd ] && restart return 0 } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; condrestart) condrestart ;; status) status snmptrapd RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" RETVAL=1 esac exit $RETVAL
起動スクリプトのアクセス権を変更し、実行権を与えます。
% chmod 755 /etc/rc.d/init.d/snmptrapd
起動スクリプトをOSに登録します。
% /sbin/chkconfig --add snmptrapd % /sbin/chkconfig snmptrapd on
理由はsnmpに直接関係あることではないので、単に手抜きしています。
本来は/var/log/snmptrapd.logに出力するべきです。
その際は3.1.5章を参考に、まだ使用されていない別のファシリティを用意して設定してください。
同様にsnmptrapdの起動オプション(-Ls)を設定したファシリティの値に変えてください。
snmptrapdの起動・再開・終了を試します。
% /etc/init.d/snmptrapd start snmptrapd を起動中: [ OK ] %
インストールした環境で下記コマンドを実行。
% snmptrap -v 2c -c localcom localhost '' systemStats 1 s "this is test Trap."
snmptrapdの起動およびTrap情報が /var/log/snmpd.log に記述されていること、およびメール配信されていることを確認します。
6.2.4 snmptrapd.conf について
snmptrapd.conf ファイルは、snmptrapdデーモンが参照するファイルです。主な定義は、Trap受信を許可するコミュニティ名、および受信した内容からどのような挙動を行うかの定義です。
パスは /usr/share/snmp/snmptrapd.conf に作る必要があります。
1 authCommunity
net-snmp 5.3x から導入されたアクセス制限機能です。5.3x以下では使えません。authCommunity type名 コミュニティ名、という形で記述します。記述されたコミュニティ名に対しtypeで明記されたアクセスを許可します。type名には、log,execute,netの種別があります。
- log
syslogやstdout等の特定ファイルなどへ出力することを許可する
- execute
特定のプログラムを起動することを許可する
- net
別の通知先への転送を許可する
2 traphandle
特定のoidに対応して動かしたいプロセスを指定します。文法は、traphandle oid | default program argsとなります。oidには、特定のoidを指定します。defaultと指定すると全てのoidが対象になります。

[127.0.0.1]:32772]: Trap ,