snmptrapはエージェントからマネージャへsnmpで情報を送る仕組みです。
・エージェント(snmpで情報を送る側)
・マネージャ(snmpで情報を受信する側)※今回コチラがZabbix側
snmptrapを受けると、スクリプトに渡してzabbix_senderで送る仕組み
# /etc/snmp/snmptrapd.conf authCommunity log,execute,net snmptraptest traphandle default /bin/bash /usr/local/bin/zabbix_snmptrap.sh
この場合、「snmptraptest」いうコミュニティ名で送信されたSNMPv1またはv2cのコミュニティ名を使って送信されたSNMPトラップを受諾する。
そして挙動として、「ログ出力(log)」「コマンドの実行(execute)」「別のネットワークへの転送(net)」を許すという意味だ。
authCommunityの代わりに以下のように記述すると、認証を無効にできます。(どのコミュニティからもで受け付けるようになる)
disableAuthorization yes
/usr/local/bin/zabbix_snmptrap.sh
#!/bin/sh ZABBIX_SERVER="127.0.0.1"; ZABBIX_PORT="10051"; ZABBIX_SENDER="/usr/bin/zabbix_sender"; KEY="snmptraps"; read hostname read ip read uptime read oid read address read community read enterprise oid=`echo $oid|cut -f2 -d' '` address=`echo $address|cut -f2 -d' '` community=`echo $community` enterprise=`echo $enterprise|cut -f2 -d' '` oid=`echo $oid|cut -f11 -d'.'` community=`echo $community|cut -f2 -d'"'` str="$hostname $address $community $enterprise $oid" $ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $hostname -k $KEY -o "$str" echo $str >> /tmp/snmptrap.log echo $ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $hostname -k $KEY -o "$str" >> /tmp/snmptrap.log
名前解決できないホストの場合、ホスト名の部分が<UNKNOWN>となってしまう為、/etc/hostsに書いておく。
・ホスト名がUNKOWNの例
Feb 26 09:28:43 watch73 snmptrapd[12672]: 2014-02-26 09:28:43 <UNKNOWN> [UDP: [192.168.42.250]:162]: DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (411709084) 47 days, 15:38:10.84 SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.12925.1.8 SNMPv2-SMI::enterprises.12925.1.7.1.5.1 = STRING: "test_trap" SNMPv2-SMI::enterprises.12925.1.7.1.6.1 = STRING: "This is a test trap sent from InServ 3PAR2001, Serial Number 1437760" SNMPv2-SMI::enterprises.12925.1.7.1.4.1 = Gauge32: 3 SNMPv2-SMI::enterprises.12925.1.7.1.2.1 = INTEGER: 6 SNMPv2-SMI::enterprises.12925.1.7.1.3.1 = STRING: "2014-02-26 09:28:43 JST" SNMPv2-SMI::enterprises.12925.1.7.1.7.1 = Gauge32: 4294967295 SNMPv2-SMI::enterprises.12925.1.7.1.8.1 = Gauge32: 4294967295 SNMPv2-SMI::enterprises.12925.1.7.1.9.1 = INTEGER: 5 SNMPv2-SMI::enterprises.12925.1.7.1.10.1 = STRING: "1437760"
# /etc/init.d/snmptrapd start # chkconfig snmptrapd on
タイプ: Zabbixトラッパー
キー: snmptraps
※キーはzabbix_snmptrap.shで指定したキーを設定
テストは下記などで実行する。
# snmptrap -v 2c -c snmptraptest 192.168.42.254 '' snmptraps snmptraps s "Test Message"
エージェントの送信側(ネットワーク機器)によって、送信の形が違うので
その場合、zabbix_snmptrap.shを調節する。