Solaris や Linux, インターネットサーバに関するサイトです

NET-SNMP の snmptrapd を利用した TRAP の受信方法を記載する。
使用した NET-SNMP のバージョンは、ver.5.4.1-3 である。

ここでは、ある監視対象から TRAP を受信したとき、管理者へメール送信を行い、syslog にログを出力する。



$ cat snmptrapd.conf
authCommunity execute public             
traphandle default /usr/local/bin/trap.pl 
ここで、
authCommunity execute public
という行は
「public」というコミュニティ名で送信された SNMP v1, v2c の SNMP TRAP を受諾するという意味である。
また、TRAP を受信したときの挙動としては、コマンドの実行(execute)を許可している。execute の他には、ログ出力(log)とTRAPの転送(net)がある。

コマンドを実行するには、次のように traphandle ディレクティブを使う。
traphandle トラップOID プログラム名
先の例では、トラップOID に「default」を指定し、全ての TRAP に対して /usr/local/bin/trap.pl というプログラムを実行する。特定の TRAP を受信したときのみプログラムを実行させる場合は、「default」ではなくトラップOID を指定する。

ここで trap.pl は、TRAP を受信したときに管理者へのメール送信、syslog への出力(logger や Sys::Syslog モジュールを利用)を行う。

authCommunity に log を指定することでも syslog の出力を行うことができるが、試してみた限りでは syslog のプライオリティを変更することができなかった。また、syslog に出力するメッセージを自分の好みのものに変えるためにも、プログラムから sysylog を出力したほうが良いだろう。

また、traphandle で指定したプログラムは、以下のようなフォーマット(1行につき1エントリである)で TRAP を標準入力から受け取ることになるので、プログラムで自由に文字列を加工すると良い。

HOSTNAME
trap を送ってきた該当ホストの名前。ホスト名は gethostbyaddr() で決定されたものである。

IPADDRESS
trap を送ってきたホストの IP アドレス。

VARBINDS
トラップとその変数の記述を含む variable bindings のリスト。空白までの行の最初のトークンは OID で、行の残りの部分はその値である。 1 番目の OID は system.sysUpTime.0、 2 番目の OID は ...snmpTrap.snmpTrapOID.0 にすべきである。 OID の残りは trap に含まれる variable bindings である (ただし最後の OID はこの限りでないかもしれない)。 SNMPv1 trap では、一番最後の OID は ...snmpTrap.snmpTrapEnterprise とその値である。基本的に SNMPv1 trap は、 SNMPv1 と SNMPv2 の共存のためのドキュメントに書かれている方法で、 SNMPv2 trap の PDU タイプに変換されている。

snmptrapd の起動


# /usr/local/sbin/snmptrapd -c /usr/local/share/snmp/snmptrapd.conf
また、再起動時に snmptrapd が起動するように起動スクリプトを作成しておく。


※参考サイト
http://www.itmedia.co.jp/enterprise/articles/0705/...
タグ

このページへのコメント

zcMycd Thanks so much for the blog post.Really thank you! Will read on...

0
Posted by check it out 2014年01月21日(火) 14:59:03 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

編集にはIDが必要です