Zabbix 2.2でSNMPトラップ受信
receiverのPerlスクリプトは、Zabbixのソースコードに含まれています。
# cp zabbix-2.2.2/misc/snmptrap/zabbix_trap_receiver.pl /etc/zabbix/zabbix_trap_receiver.pl # chmod +x /etc/zabbix/zabbix_trap_receiver.pl
トラップを受け取ると、perlを実行するよう設定します。
# vi /etc/snmp/snmptrapd.conf authCommunity log,execute,net snmptraptest perl do "/etc/zabbix/zabbix_trap_receiver.pl"
※authCommunityの代わりに以下のように記述すると、認証を無効にできます。(どのコミュニティからもで受け付けるようになる)
disableAuthorization yes
# service snmptrapd restart # chkconfig snmptrapd on
これで他のサーバからトラップを送れば、/tmp/zabbix_traps.tmpにログが出力されます。
# snmptrap -v 2c -c snmptraptest 192.168.42.254 '' snmptraps snmptraps s "Test Message"
10:53:46 2014/03/28 ZBXTRAP 192.168.42.254 PDU INFO: notificationtype TRAP version 1 receivedfrom UDP: [192.168.42.11]:59269->[192.168.42.254] errorstatus 0 messageid 0 community snmptraptest transactionid 11 errorindex 0 requestid 1284761391 VARBINDS: DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (447355799) 51 days, 18:39:17.99 SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: SNMPv2-MIB::snmpTraps SNMPv2-MIB::snmpTraps type=4 value=STRING: "Test Message"
Zabbix Server側でzabbix_trap_receiver.plかは出されたトラップを受け取る設定を入れる
※「SNMPTrapperFile=」のファイルは、zabbix_trap_receiver.plのログファイルと合わせる必要があります。
# vi /etc/zabbix/zabbix_server.conf SNMPTrapperFile=/tmp/zabbix_traps.tmp StartSNMPTrapper=1
# /etc/init.d/zabbix-server restart
アイテム:SNMPtrap-log
タイプ:SNMPトラップ
キー:snmptrap[“”]
データ型:ログ
ログ時間の形式:hh:mm:ss yyyy/MM/dd
アプリケーション:SNMPTrap