Имеем сервер Ubuntu 16.04.3 LTS. На нём крутится Zabbix server. Задача — настроить SNMP Traps.
Ставим пакеты под рутом:
apt-get install snmp snmpd snmptt snmptrapd
В конфиге /etc/default/snmptrapd изменяем значение параметра TRAPDRUN с no на yes (если там есть такая настройка, в последних версиях её нет).
В конфиге /etc/snmp/snmptrapd.conf:
authCommunity log,execute,net public
traphandle default /usr/sbin/snmptthandler
В конфиге /etc/snmp/snmptt.ini укажем параметры:
mode = daemon
net_snmp_perl_enable = 1
mibs_environment = ALL
date_time_format = %H:%M:%S %Y/%m/%d
log_enable = 1
log_file = /var/log/snmptt/snmptt.log
unknown_trap_log_enable = 1
unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log
В конфиге /etc/snmp/snmptt.conf дописываем:
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $1 $2 $3
Перезапускаем snmpd, snmptt и snmptrapd:
service snmpd restart
service snmptt restart
service snmptrapd restart
Проверяем, что 162 порт слушается:
netstat -tanu | grep :162
Результат:
udp 0 0 0.0.0.0:162 0.0.0.0:*
Правим конфиг /etc/zabbix/zabbix_server.conf:
StartSNMPTrapper=1
SNMPTrapperFile=/var/log/snmptt/snmptt.log
Перезапускаем всё:
service snmpd restart
service snmptt restart
service snmptrapd restart
service zabbix-server restart
Можно сгенерировать тестовый трап:
snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "teststring000"
В файле /var/log/snmptt/snmptt.log видим:
Wed Aug 15 15:02:36 2018 .1.3.6.1.6.3.1.1.5.3.0.33 Normal "General event" localhost - ZBXTRAP 127.0.0.1 teststring000 $2 $3
Это означает, что трапы пишутся в файл.
В файле /var/log/zabbix/zabbix_server.log видим:
11843:20180815:150241.105 unmatched trap received from "127.0.0.1": Wed Aug 15 15:02:36 2018 .1.3.6.1.6.3.1.1.5.3.0.33 Normal "General event" localhost - teststring000 $2 $3
Это означает, что заббикс читает файл.
Примечание
Сервис snmptrapd почему-то оказался не в автозагрузке:
systemctl enable snmptrapd