目次

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を設定しておく

名前解決できないホストの場合、ホスト名の部分が<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"

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を調節する。