Nagios графики и прием SNMP Traps

Материал из IN-TON
Перейти к: навигация, поиск

Все действия из этой статьи выполнялись под Debian 8.3

Установка Nagios

Здесь все просто, ставить будем из репозитариев.

  1. aptitude install nagios3

Прикручиваем графики

Сперва ставим необходимые пакеты

  1. aptitude install rrdtool librrds-perl gcc make

Собираем из исходников PNP4Nagios

  1. wget http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz
  2. tar -xzf ./pnp4nagios-0.6.25.tar.gz
  3. cd ./pnp4nagios-0.6.25
  4. ./configure
  5. make
  6. make fullinstall

Инсталятор расчитан на HTTPD в нашем случае Apache2, поэтому переносим конфиг на место, включаем его в apache и подчищаем мусор. Также в конфиге необходимо исправить параметр AuthUserFile и указать путь к реальному файлу авторизации, в нашем случае /etc/nagios3/htpasswd.users

  1. mv /etc/httpd/conf.d/pnp4nagios.conf /etc/apache2/conf-available/
  2. rd /etc/httpd/conf.d
  3. rd /etc/httpd
  4. a2enconf pnp4nagios
  5. service apache2 reload

Теперь браузером заходим http://address-nagios/pnp4nagios и проверяем все ли в порядке, в моем случае необходимо было включить mod_rewrite в apache и установить php-gd

  1. aptitude install php5-gd
  2. a2enmod rewrite
  3. service apache2 restart

Обновляем в браузере страницу, убеждаемся что все в порядке и продолжаем.

  1. mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/old_install.php
  2. cp ./source_php4nagios/contrib/ssi/status-header.ssi /usr/share/nagios3/htdocs/ssi

Осталось настроить Nagios. В Nagios.cfg выставляем следующие параметры:

  1. process_performance_data=1
  2.  
  3. #
  4. # service performance data
  5. #
  6. service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
  7. service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
  8. service_perfdata_file_mode=a
  9. service_perfdata_file_processing_interval=15
  10. service_perfdata_file_processing_command=process-service-perfdata-file
  11.  
  12. #
  13. # host performance data starting with Nagios 3.0
  14. #
  15. host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
  16. host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
  17. host_perfdata_file_mode=a
  18. host_perfdata_file_processing_interval=15
  19. host_perfdata_file_processing_command=process-host-perfdata-file

В конфиг commands.cfg добавляем следующее:

  1. define command{
  2. command_name process-service-perfdata-file
  3. command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata
  4. }
  5.  
  6. define command{
  7. command_name process-host-perfdata-file
  8. command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata
  9. }

Пишем шаблоны с графиками для сервисов и хостов.

  1. define host {
  2. name host-pnp
  3. action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
  4. register 0
  5. }
  6.  
  7. define service {
  8. name srv-pnp
  9. action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
  10. register 0
  11. }

Осталось назначить шаблоны нужным хостам и сервисам, например так:

  1. define host{
  2. use linux-server,host-pnp  ; Name of host templates to use
  3.  ; This host definition will inherit all variables that are defined
  4.  ; in (or inherited by) the linux-server host template definition.
  5. host_name localhost
  6. alias localhost
  7. address 127.0.0.1
  8. }
  9. define service{
  10. use local-service,srv-pnp  ; Name of service template to use
  11. host_name localhost
  12. service_description PING
  13. check_command check_ping!100.0,20%!500.0,60%
  14. }

ЗЫ: размеры всплывающих графиком можно поменять в /usr/local/pnp4nagios/etc/config_local.php параметр $conf['popup-width']

Прикручиваем SNMP Traps

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

  1. aptitude install snmptt snmptrapd
  2. adduser snmptt nagios

В /etc/snmp/snmp.conf добавляем параметр printNumericOids 1 чтобы snmptrapd не осуществлял трансляцию OID-ов в текстовый формат, в итоге содержание файла следующее

  1. # As the snmp packages come without MIB files due to license reasons, loading
  2. # of MIBs is disabled by default. If you added the MIBs you can reenable
  3. # loading them by commenting out the following line.
  4. mibs :
  5. printNumericOids 1
  6.  

В конфиг /etc/snmp/snmptrapd.conf в конец добавляем

  1. traphandle default /usr/sbin/snmptthandler
  2. disableAuthorization yes

Переходим к /etc/snmp/snmptt.ini и приводим параметры в соответствие со списком:

  1. mode = daemon
  2. dns_enable = 1
  3. strip_domain = 1
  4. daemon_fork = 1
  5. exec_enable = 1

При установке snmptt устанавливается пример конфигурации snmptt.conf для тестовых целей поравим его, нас интересуют события linkUp и linkDown
FORMAT - описывает формат строки которая будет писаться в логи.
EXEC - скрипт который необходимо исполнить
$R - имя хоста от которого пришел трап
$Fz - распарсенная и обработанная строка из FORMAT
Блок SDESC - EDESC информационный и его вообще можно опустить.

  1. EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal
  2. FORMAT Link down on interface $4. Admin state: $2. Operational state: $3
  3. EXEC /usr/share/nagios3/plugins/eventhandlers/submit_check_result $R $4 1 "$Fz"
  4. SDESC
  5. A linkDown trap signifies that the SNMP entity, acting in
  6. an agent role, has detected that the ifOperStatus object for
  7. one of its communication links is about to enter the down
  8. state from some other state (but not from the notPresent
  9. state). This other state is indicated by the included value
  10. of ifOperStatus.
  11. EDESC
  12. #
  13. #
  14. #
  15. EVENT linkUp .1.3.6.1.6.3.1.1.5.4 "Status Events" Normal
  16. FORMAT Link up on interface $4. Admin state: $2. Operational state: $3
  17. EXEC /usr/share/nagios3/plugins/eventhandlers/submit_check_result $R $4 0 "$Fz"
  18. SDESC
  19. A linkUp trap signifies that the SNMP entity, acting in an
  20. agent role, has detected that the ifOperStatus object for
  21. one of its communication links left the down state and
  22. transitioned into some other state (but not into the
  23. notPresent state). This other state is indicated by the
  24. included value of ifOperStatus.
  25. EDESC
  26.  

После того как поравили все конфиги осталось сдделать небольшую правку в скрипте submit_check_result иначе не взлетит :-) а именно поменять в самой первой строке #!/bin/sh на #!/bin/bash

  1. #!/bin/bash
  2. #
  3. # SUBMIT_CHECK_RESULT
  4. # Written by Ethan Galstad (egalstad@nagios.org)
  5. # Last Modified: 02-18-2002
  6. #
  7. # This script will write a command to the Nagios command...

Теперь перезапускаем сервисы

  1. service snmptrapd restart
  2. service snmptt restart