четверг, 6 июня 2013 г.

Настройка Zabbix SNMP traps

Есть три варианта настройки получения snmp трапов zabbix'ом.
1. SNMPTT (SNMP Trap Translator)
2. Perl скрипт
3. Bash скрипт и zabbix_sender 

Примеры(почти копипаст) рассматриваются для zabbix 2.0.6 установленный на CentOS 6.4 minimal

Общее

Настройка правил для файрвола
iptables -I INPUT -p udp --dport 161 -j ACCEPT
service iptables save

На время настройки можно отключить SElinux, чтобы не было проблем с созданием файлов. Позже необходимо будет настроить соответствующие политики.
setenforce 0

Не забыть настроить ротацию файла трапов если используется 1 или 2 метод.
При использовании 2 и 3 методов, скрипты можно переписать под свои нужды и свои форматы.

Установка snmp, если еще не установлен
yum install net-snmp net-snmp-utils net-snmp-perl
chkconfig snmptrapd on

1. SNMPTT (SNMP Trap Translator)

Установка репозитория epel
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm


yum install snmptt 
Настройка snmptrapd
/etc/snmp/snmptrapd.conf
disableAuthorization yes
traphandle default snmptthandler
#для ведения логов самого snmptrapd
# logoption f /tmp/snmptrapd.log

Настройка snmptt
/etc/snmp/snmptt.ini
net_snmp_perl_enable = 1
mibs_environment = ALL
date_time_format = %H:%M:%S %Y/%m/%d
log_enable = 1
log_file = /tmp/my_zabbix_traps.tmp

#Если что-то не работает можно включить отладку
DEBUGGING = 2
DEBUGGING_FILE = /tmp/snmptt.debug

Создать шаблоны представления трапов
/etc/snmp/snmptt.conf
#Каждая инструкция FORMAT должна начинаться с "ZBXTRAP [адрес]"
# для всех трапов
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $1
#
# конкретный трап
EVENT coldStart .1.3.6.1.6.3.1.1.5.1.0.33 "Status Events" Normal
FORMAT ZBXTRAP $aA Device reinitialized (coldStart)

Перезапустить сервисы
service snmptt restart
service snmptrapd restart
Включить в автозагрузку
chkconfig snmptt on
chkconfig snmptrapd on


Выполнить тестовые трапы
snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.1' '0.0.0.0' 6 1 '55' .1.3.6.1.6.3.1.1.5.1 s "teststring000"
snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.1' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.1 s "teststring000"

В файле /tmp/my_zabbix_traps.tmp должны появиться подобные строки
11:28:38 2013/06/05 .1.3.6.1.6.3.1.1.5.1.0.1 Normal "General event" localhost - ZBXTRAP 127.0.0.1 teststring000
11:29:46 2013/06/05 .1.3.6.1.6.3.1.1.5.1.0.33 Normal "Status Events" localhost - ZBXTRAP 127.0.0.1 Device reinitialized (coldStart)

Настройка приёма трапов в zabbix

 Включить траппер
/usr/local/etc/zabbix_server.conf
SNMPTrapperFile=/tmp/my_zabbix_traps.tmp
StartSNMPTrapper=1

Настроить Item:
Пример Item для конкретного трапа

Пример Item для всех остальных


Выполнить еще раз тестовые трапы.
В LastData должно появиться следующе

Аналогично можно настроить трапы для других хостов и создавать триггеры как обычно.


2. Perl скрипт

Распаковать(или скопировать) скрипт из архива zabbix
cd /usr/local/bin/
tar xvf /tmp/zabbix-2.0.6.tar.gz zabbix-2.0.6/misc/snmptrap/zabbix_trap_receiver.pl --strip-components=3

Настройка snmptrapd
/etc/snmp/snmptrapd.conf
disableAuthorization yes
perl do "/usr/local/bin/zabbix_trap_receiver.pl";
#для ведения логов snmptrapd
# logoption f /tmp/snmptrapd.log

service snmptrapd restart

Выполнить тестовые трапы. И проверить содержимое
/tmp/zabbix_traps.tmp
Должно быть подобное
11:28:05 2013/06/06 ZBXTRAP 127.0.0.1
PDU INFO:
  notificationtype               TRAP
  version                        0
  receivedfrom                   UDP: [127.0.0.1]:40882->[127.0.0.1]
...


Включить траппер
/usr/local/etc/zabbix_server.conf
SNMPTrapperFile=/tmp/zabbix_traps.tmp
StartSNMPTrapper=1

Настройка Item аналогична SNMPTT.



3. Bash скрипт и zabbix_sender

В данном варианте не потребуются промежуточные файлы, скрипт будет отправлять трапы через zabbix_sender. Соответственно в данном варианте не требуется ротация файла трапов.
Тип данных будет не snmptrap, а zabbix trap.

Распаковать(или скопировать) скрипт из архива zabbix
cd /usr/local/bin/
tar xvf /tmp/zabbix-2.0.6.tar.gz zabbix-2.0.6/misc/snmptrap/snmptrap.sh --strip-components=3
Настройка snmptrapd
/etc/snmp/snmptrapd.conf
disableAuthorization yes
traphandle default ./usr/local/bin/snmptrap.sh

Настроить скрипт
/usr/local/bin/snmptrap.sh
ZABBIX_SERVER="localhost";
ZABBIX_PORT="10051";
ZABBIX_SENDER="/usr/local/bin/zabbix_sender";
KEY="zabbixTrapKey";
HOST="Zabbix server";
#В данном примере имя хоста содержит пробелы, поэтому надо добавить "" вокруг $HOST
$ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s "$HOST" -k $KEY -o "$str"

service snmptrapd restart

Настройка приёма трапов в zabbix


Key должен быть равен KEY из файла snmptrap.sh

 Отправить тестовый трап
 В LastData должно появиться следующе


79 комментариев:

  1. Добрый день!
    Статья хорошая, но пример приведен только для локального хоста. У меня вот не получается настроить трапы с оборудования Huawei.Сами трапы приходят и складываются в файл в таком виде :
    IF-MIB::linkUp Normal "Switch" Switch_IP - ZBXTRAP Switch_IP IF-MIB::ifIndex.31:31 IF-MIB::ifAdminStatus.31:up IF-MIB::ifOperStatus.31:up IF-MIB::ifDescr.31:Vlanif100

    И все, Zabbix их не отображает!Не подскажите куда смотреть?

    ОтветитьУдалить
    Ответы
    1. Проверить включен ли траппер в файле zabbix_server.conf
      Далее смотреть лог /var/log/zabbix/zabbix_server.log

      Удалить
    2. У меня аналогичная проблема. Трапы с коммутатора до сервера доходят, т.е. логах записи присутствуют, но в zabbix они не попадают.
      В файле /etc/zabbix/zabbix_server.conf включил:
      SNMPTrapperFile=/tmp/zabbix_traps.tmp
      StartSNMPTrapper=1

      в логе /var/log/zabbix/zabbix_server.log записи одного содержания
      32108:20130821:131922.534 cannot send list of active checks to [127.0.0.1]: host [Zabbix server] not found

      Удалить
    3. Сервис zabbix_server перезапускали? Какой метод используете для передачи трапов snmptt, perl или bash?

      Отсутствие active checks с snmp не связано, возможно Вы переименовывали хост Zabbix server или что не настроили в конфиге агента.

      Удалить
    4. сервис zabbix_server перезапускал. использую bash (3-й способ).

      Файл конфига агента вы имеет в виду zabbix_agentd.conf или что-то другое. Этот файл я вообще не конфигурировал.



      Удалить
    5. bash вообще не использует тип snmptrap (как написано используется тип zabbix trapper). Скрипт сам отправляет trap напрямую в zabbix. Поэтому наверно в файле zabbix_agentв.conf надо указать ServerActive=127.0.0.1

      Удалить
    6. В файле /etc/zabbix/zabbix_agentd.conf строка ServerActive=127.0.0.1 прописана.

      Удалить
    7. Попробуйте запустить sender вручную, и посмотреть что получится

      Удалить
    8. если Вы про zabbix_sender то вот что он мне выдал:
      ~$ zabbix_sender -z localhost -p 10051
      sent: 0; skipped: 1; total: 1

      Удалить
    9. ну так параметры же надо указывать
      zabbix_sender -z localhost -p 10051 -s HOST -k KEY -o VALUE

      HOST - должен быть указан точно как заведен на сервере
      KEY - ключ item, куда должны складываться значения

      Удалить
    10. Теперь я наконец-то понял что такое HOST. Это же "Узел сети". :-)
      Получилось отправить данные в заббикс:
      ~$ zabbix_sender -z localhost -p 10051 -s snmptraps -k snmptraps -o TestTraps
      info from server: "Processed 1 Failed 0 Total 1 Seconds spent 0.000118"
      sent: 1; skipped: 0; total: 1

      Правда теперь я в озадачен как разделять трапы по узлам, ведь все трапы будут сыпаться на один узел.

      Удалить
    11. Либо разбирать тарп внутри скрипта, что imho дело не удобное для bash.
      Поэтому и рекомендовали использовать или snmptt или perl.
      Perl самый быстрый и на мой взгляд самый гибкий метод, поэтому я лично использую именно perl скрипт с мелкими доработками.

      Удалить
    12. Да!
      Думаю мне пока проще сделать опрос OID нужных мне портов, а уже в будущем разобраться с perl и использовать трапы.
      На данном этапе мне в zabbix пришел не полный текст, только адрес хоста и знаки "=" :-) Текст где-то потерялся.
      Спасибо за помощь.

      Удалить
  2. Траппер включен, в логах заббикса появляются записи вида : unmatched trap received from ... и сам трап.
    Настроено используя snmptt.

    ОтветитьУдалить
    Ответы
    1. я думаю, здесь unmatched означает, что не найден Item куда надо сложить значение. В документации
      https://www.zabbix.com/documentation/doku.php?id=2.0/manual/config/items/itemtypes/snmptrap
      написано
      snmptrap[regex]
      Catches all SNMP traps from a corresponding address that match regex
      Т.е. regex - должен совпадать с каким-то текстом содержащимся в самом трапе.

      Удалить
  3. Не подскажите, как можно узнать приходят ли трапы с коммутатора к серверу?
    Чем их можно отловить?

    ОтветитьУдалить
    Ответы
    1. Для этого и есть сервис snmptrapd. В конфиге указываете, например,
      logoption f /tmp/snmptrapd.log
      и смотрите этот лог. Или в чем точнее вопрос?

      Удалить
    2. Я только начал заниматься данной темой и не могу понять правильно ли я настроил коммутатор Huawei. Все статьи в инете, которые описывают настройку трапов основаны на оборудовании Cisco.

      Удалить
    3. У меня пока что-то этот файл не создался, видимо или я сервер не правильно настроил или ничего не приходит от коммутатора.

      P.S. Я от здешней капчи под большим впечатлением )))

      Удалить
    4. Нашел еще проще способ проверки сервера, когда результат будет выбрасываться в консоль. Запустил сервер с командной строки со следующими параметрами:
      snmptrapd -f -L o
      и с помощью вашей тестового трапа:
      snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.1' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.1 s "teststring000"
      отправлял трапы с соседнего компьютера.

      Удалить
    5. Можно вообще слушать SNMP трафик, как то так:
      # tcpdump udp port snmp
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
      19:31:12.223545 IP 192.168.1.231.40522 > 192.168.1.233.snmp: GetRequest(35) E:41193.1.1.2.2.1.7.1
      19:31:12.254265 IP 192.168.1.233.snmp > 192.168.1.231.40522: GetResponse(36) E:41193.1.1.2.2.1.7.1=0
      19:31:13.254507 IP 192.168.1.231.40730 > 192.168.1.233.snmp: GetRequest(35) E:41193.1.1.2.2.1.6.1
      19:31:13.274421 IP 192.168.1.233.snmp > 192.168.1.231.40730: GetResponse(36) E:41193.1.1.2.2.1.6.1=0

      Удалить
    6. Пардон, речь о трапах же, вот так:
      # tcpdump udp port snmptrap

      Удалить
  4. У меня Debian 7, ставил zabbix из пакетов. Где искать файл snmptrap.sh? (если конечно знаете)

    ОтветитьУдалить
    Ответы
    1. Придется еще скачать исходники с сайта zabbix
      zabbix-2.X.X.tar.gz
      в архиве путь:
      zabbix-2.0.6/misc/snmptrap/snmptrap.sh

      Удалить
  5. лучше использовать perl скрипт, у шела проблемы с производительностью.

    ОтветитьУдалить
  6. надо так: iptables -I INPUT -p udp --dport 162 -j ACCEPT
    udp:161 это для snmp-get,set,walk
    udp:162 для трапов

    ОтветитьУдалить
  7. Помогите пож-та разобраться ...

    У меня трапы посылаются из java code from App servers to localhost : with "Error" status (когда есть проблема) и "OK" (когда проблема исчезла) .
    какой метод мне подходит ?
    как мне настроить перенаправку трапов к заббих серверу ?
    что должно быть в item/trigger что бы каждый трап был отдельным alert in dashboard и "нормал" alert ack. the "error" alert. ?

    Спасибо за помощь!
    Natalia

    ОтветитьУдалить
  8. Настройка трапов описана, все методы делают одно и тоже разными способами(наиболее быстрый и настраиваемый perl), а для генерации алерта по по каждому событию, можно пропробовать в trigger поставить галочку Multiple PROBLEM events generation

    ОтветитьУдалить
    Ответы
    1. Спасибо ! Попробую.

      Удалить
    2. Настройка приёма трапов в zabbix только для "Zabbix server " 127.0.0.1 или для каждого host кот. посылает трап ?

      Thanks !
      Natalia

      Удалить
    3. не могу найти zabbix_sender на agent host, как же тогда использовать "Bash скрипт и zabbix_sender" на каждом hosts ?

      Thanks !
      Natalia

      Удалить
    4. Bash не самый удачный вариант, придется допиливать скрипт чтобы он научился различать хосты из самого трапа. Либо сделать хост который будет обрабатывать все трапы.

      Удалить
    5. Нужна еще ваша помошь,

      пытаюсь настроить "1. SNMPTT (SNMP Trap Translator)" на одном из host (не zabbix server).

      1. Настройка snmptrapd
      /etc/snmp/snmptrapd.conf
      disableAuthorization yes
      traphandle default snmptthandler

      2. Настройка snmptt
      /etc/snmp/snmptt.ini
      net_snmp_perl_enable = 1
      mibs_environment = ALL
      date_time_format = %H:%M:%S %Y/%m/%d
      log_enable = 1
      log_file = /tmp/my_zabbix_traps.tmp

      3. Создать шаблоны представления трапов
      /etc/snmp/snmptt.conf
      EVENT general .* "General event" Normal
      FORMAT ZBXTRAP $aA $1

      4. Перезапустить сервисы
      service snmptt restart
      service snmptrapd restart

      Посылаю тест трап и вижу его в /tmp/my_zabbix_traps.tmp но в zabbix он не пересылается (ничего нет в LastData ) , хотя Item есть для этого host.

      в чем может быть проблема ?

      еще не очень понимаю как agent знает что надо проверять /tmp/my_zabbix_traps.tmp, ведь "Настройка приёма трапов в zabbix : Включить траппер" было только в zabbix_server.conf на zabbix сервере ?

      Спасибо !
      Natalia

      Удалить
    6. На клиенте настраивается только встроенный snmp траппер, в соответствии с документацией на это оборудование (там нет никаких zabbix агентов).
      Трап приходит на сервер, и там уже обрабатывается.

      Удалить
    7. но у меня трапы посылаются на localhost (я не могу это изменить) и ловятся местным snmptt.
      разве в item : type - SNMP trap подходит только для zabbix server ?
      (у меня v2.0.6)

      Спасибо !
      Natalia

      Удалить
    8. Что отправляет трапы? Это тестовые трапы?
      FORMAT ZBXTRAP $aA <- вот эта переменная и задает адрес хоста , т.е. сюда будет подставлен адрес отправителя трапа. Соответственно в zabbix должен быть хост с таким адресом, и у этого хоста дожен быть Item с snmp trap типом.
      + смотрите логи заббикса, что он пишет.

      Удалить
    9. нашла ошибку !!! , не правильно указала log_file = /tmp/my_zabbix_traps.tmp

      огромное вам спасибо за помощь,терпение и быстрые ответы !!!!!!!
      Natalia

      Удалить
  9. Добрый день, ситуация следующая, не обрабатываются трапы от 1 машины.
    все остальные трапы (полученные от других машин) обрабатываются, т.е. запускается snmptrap.sh и отправляет все это в zabbix

    При приходе трапа от "кривой" машины не запускается snmptrap.sh и в лог snmptrapd.log этот трап не записывается (трап приходит проверял tcpdump'ом)

    zabbix 1.8, net-snmp 5.6.2

    не знаю что делать, помогите плиз) а статья очень даже полезная

    Иван

    ОтветитьУдалить
    Ответы
    1. В дефолтных конфигах /etc/zabbix/zabbix_server.conf
      нет подобных опций
      SNMPTrapperFile=/tmp/zabbix_traps.tmp
      StartSNMPTrapper=1

      если их вписать, то заббикс сервер не запустится

      поясните плиз для чего вообще эти опции

      Удалить
    2. Я не знаю с какой версии эти настройки появились(вроде с 2.0), но в 2.0.6 они есть. Данные опции используются только при использовании snmptt и perl, именно в указанный файл будут складываться пришедшие трапы, а забикс этот файл регулярно читает. При использовании bash эти настройки не нужны, так как пересылка трапа в забикс осуществляется sender'ом

      Удалить
    3. видел похожую проблему
      http://www.opennet.ru/openforum/vsluhforumID1/83605.html
      но решения так и не нашел

      Иван

      Удалить
  10. спасибо большое, очень ценная статья. бился вчера целый день с debian 7, так и не смог заставить snmptt писать трапы в файл. а тут все получилось за 15 минут с развертыванием виртуального CentOS

    ОтветитьУдалить
    Ответы
    1. В debian 7, проблема решается так
      В файле /etc/default/snmpd
      TRAPDRUN=no
      Меняем на
      TRAPDRUN=yes

      И

      /etc/init.d/snmpd restart

      netstat -nlup | grep 162
      udp 0 0 0.0.0.0:162 0.0.0.0:* 12098/snmptrapd

      Будет все работать


      Удалить
  11. помогите !!!!

    что такое ZBXTRAP ? как он знает пересылать трапы на zabbix server ? должен ли он вообще пересылать трапы на zabbix server или читать локальный /tmp/my_zabbix_traps.tmp ?

    я настроила 1. SNMPTT (SNMP Trap Translator) все работает когда посылаю тест на самом zabbix server , но когда настроила SNMPTT на хосте и посылаю тестовые трапы то
    вижу их только в локальном /tmp/my_zabbix_traps.tmp :
    snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.1' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.1 s "test1"
    tail -1 /tmp/my_zabbix_traps.tmp
    01:17:18 2014/01/06 .1.3.6.1.6.3.1.1.5.1.0.33 Normal "Status Events" localhost - ZBXTRAP 127.0.0.1 127.0.0.1 Device reinitialized (coldStart)
    и не вижу ничего нет в LastData , хотя Item есть для этого хоста.
    почему он не читает локальный /tmp/my_zabbix_traps.tmp ?
    все работает если я посылаю трап с адресом zabbix server (192.xxx.xx.xx):

    snmptrap -v 1 -c public 192.xxx.xx.xx '.1.3.6.1.6.3.1.1.5.1' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.1 s "test1"
    как мне настроить что б ловились трапы посылаемые локально на 127.0.0.1 ?

    с Bash скрипт и zabbix_sender все работает но мне удобнее с snmptt

    спасибо !

    ОтветитьУдалить
  12. Что-то совсем запуталась.

    Если я хочу чтобы, например, Cisco мне прислал в Zabbix, что entConfigChange с OID 1.3.6.1.2.1.47.2.0.1 изменилась , что и где мне нужно прописать? И можно ли и если да, то как, чтобы траппер слал инфо, если только, что-то не работает.

    ОтветитьУдалить
    Ответы
    1. скажите лучше, что уже настроено и что конкретно не работает?

      Удалить
    2. Все настройки сделала по вашей инструкции со скриптом Perl.
      Тут прописала адрес нашего Cisco AP и пока для примера поставила, чтобы он только инфо собирал.
      /etc/snmp/snmptt.conf
      EVENT general .* "General event" Normal
      FORMAT ZBXTRAP 192.168.ххх.хх

      В самом Zabbixe у этого хоста создала новый Item и настроила как у вас в примере General Traps.

      В Lates data в результате получила вот это всё:
      Timestamp Local time Value
      2014.Jan.30 08:38:34 - 08:38:34 2014/01/30 PDU INFO:
      notificationtype TRAP
      version 0
      receivedfrom UDP: [192.168.ххх.хх]:54718->[10.1.х.хх]
      errorstatus 0
      messageid 0
      community ER_AP
      transactionid 4693
      errorindex 0
      requestid 0
      VARBINDS:
      iso.3.6.1.2.1.1.3.0 type=67 value=Timeticks: (373761982) 43 days, 6:13:39.82
      iso.3.6.1.6.3.1.1.4.1.0 type=6 value=OID: iso.2.840.10036.1.6.0.2
      iso.2.840.10036.1.1.1.17.1 type=2 value=INTEGER: 2
      iso.2.840.10036.1.1.1.18.1 type=4 value=Hex-STRING: 04 A2 2A BА F2 2F
      iso.3.6.1.6.3.18.1.3.0 type=64 value=IpAddress: 192.168.ххх.хх
      iso.3.6.1.6.3.18.1.4.0 type=4 value=STRING: "ER_AP"
      iso.3.6.1.6.3.1.1.4.3.0 type=6 value=OID: iso.2.840.10036.1.6

      Как сделать, чтобы мне АP прислал информацию только, если, например VLAN 1 стал disabled. И как на это сделать триггер, чтобы это отобразилось на dashboard. И как избавитьса от iso.3.6.....и заменить на имя.

      Заранее спасибо :)

      Удалить
    3. Если Вы используете Perl то snmptt ни устанавливать, ни настраивать не надо было.
      General traps - как написано, будет получать все неизвестные трапы. Т.е. все для которых нет Item с конкретным snmptrap[регулярное выражение].
      Далее надо получить трап(спровоцировать то что Вам требуется, например sh vlan 1 на cisco) и в Item вписать соответствующее регулярное выражение, например какую-то строку, содержащуюся в этом трапе.

      Триггер на трапы настраиваются особенно, так как нет гарантии, что придет положительный трап о решении проблемы (vlan в up'е) то в триггер придется добавлять какой-то таймаут через nodata.

      Что бы преобразовывались iso.3.6... надо добавить MIB'ы, написано здесь
      http://va0816.blogspot.ru/2013/07/snmp-mib-cent-os.html
      MIB для cisco можно скачать здесь
      http://www.cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml
      (ставить лучше всего только те MIB, которые реально требуются).

      PS я надеюсь Вы понимаете, что выполнять sh vlan 1 лучше когда вы подключены через консольный кабель, либо управляете из другого vlan.

      Удалить
    4. Простите, но я не особо понимаю, как спровоцировать и как узнать какая строка содержится в трапе, чтобы ее вписать в Item.

      Удалить
    5. Как я и писал, если вы ищете трап для отключения vlan 1, то соответственно его надо выключить. Например командами на cisсo
      (conf)#int vlan 1
      (conf)#shutdown
      (conf)#no shutdown

      Далее на сервере zabbix в настроенном файле должен появится трап.
      В вашей конфигурации он появится в General Item. И там Вы можете посмотреть, что в нем содержится и создать новый, конкретный item.

      Удалить
    6. Хммм, а если мне надо чтобы трапы ловились с Fortigate и IMM? Kак тут провоцировать?

      Удалить
    7. 1. Либо искать способы спровоцировать
      2. Искать в документации и MIB'ах как будет выглядеть trap
      3. Получать оповещение о всех trap через snmptrap.fallback и при получении необходимого настроить выделенный item.

      Удалить
    8. спасибо !

      Удалить
  13. Здравствуйте, я настроил все как описано в Вашем мануале, но у меня проблема в том, что у меня не создается файл zabbix_traps.tmp и нигде в логах не отображается, что на машину пришел трап. ПРобовал уже и через перл-скрипт и через SNMP Trap Translator, ни так не так ничего не отображается. Я в тупике.

    disableAuthorization yes


    snmptrapd.conf выглядит так:
    traphandle default /usr/sbin/snmptt
    logoption f /tmp/snmptrapd.log
    disableAuthorization yes

    Если нужно, могу выложить остальные конфиги и логи

    ОтветитьУдалить
    Ответы
    1. На время настройки отключить iptables
      service iptables stop
      Отключить SELinux
      setenforce 0
      Перезапустить службы, проверить, что они корректно запускаются.
      service snmptt restart
      service snmptrapd restart
      И отправить трап еще раз

      Удалить
    2. У меня все развернуто на Debian
      Iptables выключен,
      перезагружал службы snmpd и snmptt/
      отправляю трап, с помощью tcpdump его вижу, а в логах его все равно нет.

      Удалить
    3. В предыдущих комментариях писали:
      >>> бился вчера целый день с debian 7, так и не смог заставить snmptt писать трапы в файл. а тут все получилось за 15 минут с развертыванием виртуального CentOS

      Я с Debian не работал, и точнее сказать не могу что искать. Возможно в нем есть еще какие-то блокировщики

      Удалить
    4. Еще раз проверил конфиг и прочитал что необходимо перезагрузиться – и после перезагрузки всей системы трапы начали приходить в zabbix-traps.tmp. Но у меня остаются 2 вопроса:
      1. в Заббиксе в последних данных он не отобразился, хотя созданы Itemы для локалхоста.

      2. Сейчас у меня стоит задача ловить трапы с cisco. С нее сейчас отправляются трапы с стрингом "Internet_Down" и "kontinent_Down"/ Чтобы из ловить мне надо создать конкретные правила в /etc/snmp/snmptt.conf?
      Так же, я не очень понял формат ивента
      EVENT coldStart .1.3.6.1.6.3.1.1.5.1.0.33 "Status Events" Normal
      FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
      откуда я, например, возьму значения ".1.3.6.1.6.3.1.1.5.1.0.33"?
      Или мне обязательно знать эти значения, которые будут приходить?
      В cisco сейчас настроено следующее:
      event manager applet TRACK_101_event
      event track 101 state down
      action 1.0 snmp-trap strdata "Internet_down"
      Как мне это отловить?.

      Заранее спасибо за ответы и за отличную статью.

      Удалить
    5. 1. проверять настройки и логи заббикса, больше тут ничего не скажешь
      2. Да прописываются конкретно. значения 1.3..... можно брать из файла трапов, или из MIB. Для конкретных трапов эти значения надо знать, для всех не известных трапов настроить fallback и потом донастраивать как конкретный, по мере их получения.

      Удалить
    6. Спасибо, буду разбираться :)

      Удалить
  14. Добрый день.
    Я на основании вашей статьи и документации https://www.zabbix.com/documentation/2.0/ru/manual/config/items/itemtypes/snmptrap пытаюсь заставить zabbix принимать трапы.
    Общая настройка прошла успешно snmptrapd отрабатывает и perl скрипт складывает трапы в файл my_zabbix_traps.tmp.
    В конфигурации zabbix-server.conf указал данные по обработке трапов

    StartSNMPTrapper=1
    SNMPTrapperFile=/tmp/my_zabbix_traps.tmp

    Данные не попадают LastData, и в логе zabbix я не вижу чтобы пришедшие трапы обрабатывались

    Как проверить что данные вообще попадают в систему zabbix (кроме лога) ?

    ОтветитьУдалить
    Ответы
    1. После изменения zabbix-server.conf сервис перезапускали?
      Заббикс был собран с ключом --with-net-snmp?

      Удалить
    2. 1. Конечно перезапускал и snmptrapd и zabbix-server
      2. Не могу точно сказать так как использовал готовый vhdd для Hiper-V забирал с сайта zabbix.

      Я еще раз пробежался по настройке, согласно документации http://www.zabbix.org/wiki/Start_with_SNMP_traps_in_Zabbix
      Поправил названия логов как были исходно в zabbix_trap_receiver.pl

      В итоге получаю трап в zabbix_traps.tmp такого вида

      zabbix_traps.tmp 789/789 100%
      12:54:43 2015/01/29 ZBXTRAP 127.0.0.1
      PDU INFO:
      errorstatus 0
      transactionid 1
      messageid 0
      errorindex 0
      version 0
      notificationtype TRAP
      requestid 0
      community public
      receivedfrom UDP: [127.0.0.1]:42321->[127.0.0.1]:162
      VARBINDS:
      DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (55) 0:00:00.55
      SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: IF-MIB::linkDown.0.33
      IF-MIB::linkDown type=4 value=STRING: ".teststring000."
      SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4 value=STRING: "public"
      SNMPv2-MIB::snmpTrapEnterprise.0 type=6 value=OID: IF-MIB::linkDown

      Но в zabbix эта скотина лезть не хочет

      Удалить
    3. После перезапуска сервиса в логе стартуют poller'ы есть там такая строчка
      server #XX started [snmp trapper #1]?

      Удалить
    4. Я правда не понял как коректно настраивать хост.
      Сейчас Хост настроен с указанием SNMP interfaces 127.0.0.1 port 161
      И к нему приклеен шаблон с привязанным Items
      Но как я понимаю даже если правила разбора трапа работают не правильно, он все равно должен быть отражен в логах zabbix-server?

      Удалить
    5. Да стартует

      51652:20150129:125403.750 server #14 started [icmp pinger #1]
      51658:20150129:125403.750 server #18 started [http poller #1]
      51661:20150129:125403.751 server #21 started [history syncer #2]
      51662:20150129:125403.754 server #22 started [history syncer #3]
      51663:20150129:125403.758 server #23 started [history syncer #4]
      51664:20150129:125403.760 server #24 started [escalator #1]
      51665:20150129:125403.762 server #25 started [snmp trapper #1]
      51666:20150129:125403.763 server #26 started [proxy poller #1]
      51667:20150129:125403.790 server #27 started [self-monitoring #1]
      51659:20150129:125403.932 server #19 started [discoverer #1]

      Удалить
    6. В perl скрипте указан полный путь
      $SNMPTrapperFile = '/tmp/zabbix_traps.tmp';

      Удалить
    7. Да полный, и в конфиге zabbix-server тоже
      zabbix_traps.tmp формируется нормально все трапы приходят и там оседают. Именно zabbix не хочет их подбирать.

      Удалить
    8. Если в логах заббикса ничего нет, тогда не знаю что может быть.
      Еще можно проверить права доступа к этому файлу, и проверить selinux, для проверки попробовать отключить его, выполнить setenforce 0

      Удалить
    9. А какой хост настраиваете? В данном примере тестовый итем висит на хосте самого Zabbix_server.
      Из документации:
      Каждая инструкция FORMAT должна начинаться с “ZBXTRAP [адрес]”, где [адрес] будет сравниваться с IP и DNS адресами у SNMP интерфейсов в Zabbix

      Т.е. указанный вами трап
      12:54:43 2015/01/29 ZBXTRAP 127.0.0.1
      придет только если на хосте Zabbix_server(по-умолчанию у него настроен 127.0.0.1)
      настроен соответствующий итем как на картинках.

      Удалить
    10. В самом zabbix следующая настройка
      Host Zabbix server
      Имеет
      Agent interfaces 127.0.0.1 порт 10050
      SNMP interfaces127.0.0.1 порт 161
      подключен итем SNMP trap fallback через шаблон Template SNMP trap fallback
      Type: Snmp trap
      key: snmptrap.fallback
      Type of information: Log
      History storage period (in days): 90
      Log time format: hh:mm:ss yyyy/MM/dd

      Как-то так.

      Удалить
  15. Большое спасибо за помощь, скорее всего придется поставить хотя-бы CentOS и на него накатывать zabbix. Потому- что не понятно как заставить его работать в данной сборке.

    ОтветитьУдалить
    Ответы
    1. В стандартной сборке с сайта заббикса, у сервера нет прав на папку /tmp , и он не может прочитать соответственно лог. Настраиваем логирование в другую папку и даем права туда серверу заббикса.

      Удалить
  16. Добрый день. Конфиги полностью идентичные вашим. В snmptrapd.log получаю:
    2015-11-18 14:39:17 10.254.250.41(via UDP: [10.254.250.41]:65534->[10.254.250.250]) TRAP, SNMP v1, community
    SNMPv2-SMI::enterprises.17095 Enterprise Specific Trap (6) Uptime: 0:00:03.10
    SNMPv2-SMI::enterprises.17095.3.2.0 = INTEGER: 1
    Но в my_zabbix_traps.tmp пусто. Правда проблема только с этой железкой, агент которой посылает трапы. Если посылать трап с локального компа или другого, то все отлично отображается. Возможно подскажите куда копать нужно. Заранее спасибо.

    ОтветитьУдалить
    Ответы
    1. Попробуйте включить дебаг
      DEBUGGING = 2
      DEBUGGING_FILE = /tmp/snmptt.debug

      Удалить
    2. Включен вижу:
      ********** SNMPTT v1.4 started: Thu Nov 19 14:32:45 2015 **********

      ********** Net-SNMP version 5.05 Perl module enabled **********

      ********** MIBS: ALL **********


      Loading /etc/snmp/snmptt.conf
      Finished loading 2 lines from /etc/snmp/snmptt.conf

      Finished loading configuration files

      Processing memory copy of configuration files
      1 EVENTs found
      1 EVENTs found that contain at least the mandatory FORMAT line
      Finished processing memory copy of configuration files

      ==========================================================
      Printing out all the events in hash table:

      Event: .* => general,General event,Normal,ZBXTRAP $aA $1,

      Finished printing out all events in hash table
      ==========================================================
      cwd: /
      Changing to UID: snmptt (495)
      Closing debug file /tmp/snmptt.debug

      Удалить
  17. Этот комментарий был удален автором.

    ОтветитьУдалить
  18. Добрый день. Спасибо Вам за статью. Столкнулась с проблемой: если запускаю snmptrapd -A -n -f -Lf /tmp/traps.log - то 162 порт слушается, тестовые трапы в логи я вижу. После остановки - netstat -nlup | grep 162 тишина, порт не слушается, соотретственно snmptrspd не работает. Пробовала service snmptrapd start, перезапускала сервер - не помогает. Может поделитесь идеями - куда копать?

    ОтветитьУдалить