CodeZine(コードジン)

特集ページ一覧

net-snmpについて(Trap設定)

net-snmpによるTrapの設定方法について

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/09/16 14:00

目次

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になってるはずです)。

/usr/share/snmp/snmptrapd.conf
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 として保存します。

/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
注意
 今回はsnmptrapd用のログは /var/log/snmpd.logに出力するようにしています。
理由は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が対象になります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:net-snmpについて

著者プロフィール

  • 赤松 エイト(エイト)

    (株)DTSに勤てます。 WebアプリやJavaやLL等の上位アプリ環境を密かに憧れつつも、ず~っとLinuxとかHP-UXばかり、ここ数年はカーネル以上アプリ未満のあたりを行ったり来たりしています。 mixiもやってまして、こちらは子育てとか日々の日記メインです。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5