====== 10 Zabbixでsnmptrapを受信する ======
snmptrapはエージェントからマネージャへsnmpで情報を送る仕組みです。
・エージェント(snmpで情報を送る側)
・マネージャ(snmpで情報を受信する側)※今回コチラがZabbix側
===== ①マネージャ側 =====
==== 1.snmptrapdを起動する ====
snmptrapを受けると、スクリプトに渡してzabbix_senderで送る仕組み
=== snmptrapd.confを修正 ===
# /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
=== 実行するプログラム「zabbix_snmptrap.sh」を作成 ===
/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
=== hostsを設定しておく ===
名前解決できないホストの場合、ホスト名の部分がとなってしまう為、/etc/hostsに書いておく。
・ホスト名がUNKOWNの例
Feb 26 09:28:43 watch73 snmptrapd[12672]: 2014-02-26 09:28:43 [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"
=== snmptrapdの起動 ===
# /etc/init.d/snmptrapd start
# chkconfig snmptrapd on
==== 2.アイテムの設定 ====
タイプ: Zabbixトラッパー
キー: snmptraps
※キーはzabbix_snmptrap.shで指定したキーを設定
===== ②エージェント側 =====
テストは下記などで実行する。
# snmptrap -v 2c -c snmptraptest 192.168.42.254 '' snmptraps snmptraps s "Test Message"
エージェントの送信側(ネットワーク機器)によって、送信の形が違うので
その場合、zabbix_snmptrap.shを調節する。
{{tag>zabbix snmp}}