суббота, 22 февраля 2014 г.

Установка и настройка Zoneminder 1.26 
на CentOS 6.5 x64

1. Устанавливаем дополнительные репозитарии и отключаем SELinux

1.1 Устанавливаем дополнительные репозитарии, необходимые для ZoneMinder:
# rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -Uhv http://centos.alt.ru/pub/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm
Устанавливаем репозитарий для ffmpeg
# nano /etc/yum.repos.d/CentOS-Base.repo
Добавляем в конец
[dag]
name=Dag RPM Repository for Centos
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
enabled=1
Устанавливаем репозитарий EPEL:
# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
(Ссылка: http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5)
Обновляем менеджер пакетов:
# yum update

1.2 Отключаем SELinux, так как ZoneMInder работает при включенном SELinux не очень хорошо.
# nano nano /etc/sysconfig/selinux
Комментируем все строи и пишем в конце:
SELINUX=disabled
Перезагружаемся после обновления
# reboot

2. Подготавливаем систему для установки Zoneminder

2.1 Установка MySQL
# yum install mysql mysql-server
Добавляем сервис mysql в скрипт автозапуска
# /sbin/chkconfig --level 345 mysqld on
Запускаем MySQL
# /etc/init.d/mysqld start
Задаем пароль root для сервера MySQL
# mysql_secure_installation
Сначала вводим на первый вопрос просто <Enter>, затем на следующих вопросах вводим пароль и его подтверждение. На остальные вопросы отвечаем ДА (y)

2.2 Установка Web-сервера apache
# yum install httpd
Добавляем в скрипт автозапуска
# chkconfig --levels 235 httpd on
Задаем имя серверу apache (у нас будет имя cam.svttk.ru)
# nano /etc/httpd/conf/httpd.conf
Прописываем директиву ServerName
ServerName cam.ххх.ru:80
Так же необходимо разрешить серверу Apache работать с символьными ссылками в скриптах (по умолчанию Apache не работает с символьными ссылками скриптов). Это исправляется в секции ScriptAlias:
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
    AllowOverride None
#   Options None (по умолчанию выставлено None. 
#   Мы пишем FollowSymLinks)
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>
Прописываем в файл hosts соответствие имени cam.svttk.ru текущей машине
# nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 roslin cam.ххх.ru
Запускаем сервер Apache
# /etc/init.d/httpd start
Разрешаем доступ к серверу Apache
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT 
# service iptables save
Проверяем и убеждаемся, что через браузер сервер отвечает

2.3 Устанавливаем php5 и связки Apache с Mysql и php5
# yum install php
Перезапускаем web-сервер
# /etc/init.d/httpd restart
На этом этапе можно проверить работу сервера apache с php5 с помощью функции phpinfo();
Установка модулей для связки PHP5 и Mysql
# yum install php-mysql php-gd php-imap php-ldap php-odbc
Перезапускаем web-сервер
# /etc/init.d/httpd restart

2.4 Устанавливаем необходимые для работы ZoneMinder пакеты
# yum install -y pcre pcre-devel
# yum install -y netpbm*
# yum install -y libjpeg libjpeg-devel
# yum install -y ffmpeg ffmpeg-devel ffmpeg-libpostproc
# yum install -y gcc-c++
# yum install -y openssl openssl-devel gnutls gnutls-devel perl-Crypt-OpenSSL-* perl-Net-SSLeay
# yum install -y bzip2 bzip2-devel
# yum install -y perl-Date-Manip perl-LWP-UserAgent-Determined perl-Sys-Mmap perl-Device-SerialPort perl-Archive-Tar perl-MIME-Lite perl-MIME-tools perl-Net-SMTP-* perl-Net-FTP-AutoReconnect perl-Archive-Zip perl-Module-Load perl-Time-HiRes git perl-PHP-Serialization subversion yasm perl-YAML
# yum install zlib-devel

После выполнения некоторых команд может выскочить предупреждение, например такое:
предупреждение: 
rpmts_HdrFromFdno: Заголовок V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
Public key for x264-devel-0.0.0-0.4.20101111.el6.rf.i686.rpm is not installed
Решение проблемы:
# rpm --import /etc/pki/rpm-gpg/RPM*

2.5 Обновление модулей PERL
# yum install cpan
# cpan –i LWP
(я всегда соглашался в процессе обновления на все вопросы и отвечал yes, просто нажав Enter)

3. Установка непосредственного ZoneMinder

3.1 Скачиваем Zoneminder и java скрипт Cambozola, который необходимо для просмотра видео в бразере
# wget https://github.com/ZoneMinder/ZoneMinder/archive/v1.26.5.tar.gz
# wget http://www.zoneminder.com/sites/zoneminder.com/downloads/cambozola.jar

3.2 Распаковываем
# tar -zxvf v1.26.5
# cd ZoneMinder-1.26.5

3.2 Версия 1.26.5 устанавливается с помощью команды cmake.
Устанавливаем cmake, затем устанавливаем ZoneMinder
# yum install cmake
# cmake . (точка в конце)
У меня  выполнение команды завершалось с ошибкой
CMake Error at CMakeLists.txt:224 (message):
  zm requires mysqlclient but it was not found on your system
Не хватало модуля MySQL. Проблема решилась после установки пакета mysql-devel:
# yum install mysql-devel
После этого выполнение cmake завершается без ошибок
# cmake . (точка в конце)
# make
# make install

4. Подготовка базы данных MySQL, с которой будет работать ZoneMinder

# mysql -uroot -p
Вводим пароль и подключаемся. Затем создаем базу данных zm
mysql> create database zm;
Создаем пользователя main c паролем 12345
mysql> CREATE USER 'main'@'localhost' IDENTIFIED BY '12345';
Определяем пользователю main права на базу zm:
mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on zm.* to main@localhost; 
Отключаемся от MySQL
mysql> exit
Заливаем таблицы MySQL базы данных ZoneMinder из файла примера
#mysql -u root -p zm < db/zm_create.sql
Вводим пароль и ждем формирования БД zm.

5. Скрипт запуска сервиса zm помещаем в папку инициализации и добавляем сервис zm в автозагрузку
# cp ./scripts/zm /etc/init.d/
# chmod 755 /etc/init.d/zm
# chkconfig --add zm

6. Подготавливаем web-папку с которой будет работать ZoneMinder и папку, в которую будут сохраняться фотографии с камер. 
Создаем папку для файлов фотографий с камер:
# mkdir /mnt/disk/zm
Создаем папку с файлами web:
# mkdir /var/www/html/zmweb
Запускаем скрипт, которому указываем папку хранения фотографий событий с камер наблюдения /var/www/html/zm:
# ./zmlinkcontent.sh /mnt/disk/zm
...
Web folder       : /usr/local/share/zoneminder/www
Content folder   : /mnt/disk/zm
...
Скрипт подготовит web-файлы в usr/local/share/zoneminder/www, но в папке /var/www/html/zmweb они пока не окажутся.

Копируем в оригинальную web-папку скрипт Cambozola.jar, который необходим для просмотра видео через web-Интерфейс.
# cp ../cambozola.jar usr/local/share/zoneminder/www/cambozola.jar

Определяем права (ZoneMinder работает от пользователя apache):
# chown -R apache:apache /mnt/disk/zm/
# chown -R apache:apache /usr/local/share/zoneminder/www

7. Открываем файл /etc/zm.conf и прописываем туда параметры доступа к базе, которые задали в пункте 4:
# nano /etc/zm.conf

# ZoneMinder database user
ZM_DB_USER=main
# ZoneMinder database password
ZM_DB_PASS=12345

8. Запускаем ZoneMinder
# service zm start
Запускается ZoneMinder:       [  OK  ]
Если "ОК" - значит все сделали правильно.

9. Настраиваем сервер apache для работы ZoneMinder.

9.1 В файле /etc/zm.conf определены папки, которые используются для хранения cgi скриптов и web страниц:
# Path to ZoneMinder web files
ZM_PATH_WEB=/usr/local/share/zoneminder/www
# Path to ZoneMinder cgi files
ZM_PATH_CGI=/usr/local/libexec/zoneminder/cgi-bin
Делаем символьную ссылку на папку с web-файлами:
# ln -s /usr/local/share/zoneminder/www /var/www/html/zmweb
Делаем символьные ссылки на cgi скрипты, расположенные в папке cgi скриптов ZoneMinder:
# ln -s /usr/local/libexec/zoneminder/cgi-bin/nph-zms /var/www/cgi-bin/nph-zms
# ln -s /usr/local/libexec/zoneminder/cgi-bin/zms /var/www/cgi-bin/zms

9.2 Редактируем файл /etc/php.ini:
# nano /etc/php.ini
В этом файле нам необходимо найти указанную ниже строку и заменить Off на On 
short_open_tag = On 
Затем необходимо указать часовой пояс в разделе [Date] (у нас это Europe/Moscow)
[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = Europe/Moscow

9.3 Перезапускаем apache
# service httpd restart

10. По адресу http://<ip адрес>/zmweb будет открываться web-интерфейс ZoneMinder.

Если браузер отображает следующую страницу - это значит сервер MySQL не запустился в системе:

Если браузер отображает следующую страницу - это значит, что в файле /etc/php.ini не прописано short_open_tag = On 

10. Настройка Zoneminder 1.26 на CentOS 6.5 x64

Нажимаем на ссылку Options в правом верхнем углу окна:

Откроется дополнительное окно с несколькими вкладками.
1) Вкладка Display – Ничего не меняем
2) Вкладка Systems.
Меняем  OPT_USE_AUTH. Ставим галку.
AUTH_RELAY – ставим none
После сохранения – пароль admin / admin
Здесь же можно выбрать русский язык интерфейса
LANG_DEFAULT = ru_ru
3) Вкладка Config – ничего не меняем
4) Вкладка Paths – ничего не меняем
5) Вкладка web – ничего не меняем
6) Вкладка Images – 
OPT_CAMBOZOLA – ставим галку
7) Вкладка Logging – ничего не меняем
8) Вкладка Network – ничего не меняем
9) Вкладка Email – ничего не меняем
10) Вкладка  Upload – ничего не меняем
11) Вкладка X10 – ничего не меняем
12) Вкладка High B/W – ничего не меняем
13) Вкладка Medium B/W – ничего не меняем
14) Вкладка Low B/W – ничего не меняем
15) Вкладка Phone B/W  - ничего не меняем
16) Вкладка eyeZm – ничего не меняем
17) Вкладка Users – добавляем нового пользователя. У пользователя admin сразу меняем пароль на очень-очень сложный.




Добавление новой камеры происходит при нажатии кнопки "Добавить монитор".

Рабочие листы настроек для камеры HiQ (заполняются только первые две вкладки):





Ограничение скорости записи выбираем побольше (на камере стоит 25 FPS) - 40.
Источник для камеры HiQ
rtsp://10.200.72.113:554/user=admin&password=&channel=1&stream=0.sdp?
На остальных трех вкладках ничего не меняю:
   



понедельник, 13 января 2014 г.


Запуск скриптов в Linux через WEB интерфейс.

При настройках по умолчанию сервера APACHE и PHP, модуль php не может запустить скрипт в Linux по вызову shell_exec(" <команда запуска скрипта> ").

Если <команда запуска скрипта> в рутовой консоли Linux выполняется без проблем, но не выполняется через web-интерфейс, можно разрешить выполнять скрипт другим пользователям системы Linux. Сделать это можно путем редактирования файла /etc/sudoers. Данный файл рекомендуется редактировать с помощью специальной программы visudo.

1. Запускаем
#visudo

2. Ищем строчку
root ALL=(ALL) ALL

3. Переходим в режим вставки, нажав клавишу "i". Внизу появится информирование о том, что мы перешли в режим вставки данных - -- INSERT --:


4. Дописываем следующую строчку после найденной строки:
ALL ALL=(root) NOPASSWD:<команда запуска скрипта>

5. Нажимаем клавишу "Esc", тем самым перейдя в обычный режим просмотра

6. Сохраняемся, набрав комбинацию ":w"

7. Выходим, введя комбинацию":q"

8. Теперь при вызове страницы с командой php скрипт должен выполниться
<?php
$x=shell_exec("<команда запуска скрипта> ");
echo $x;
?>


Примечание: У меня скрипт содержал команду создания графиков rrdtool и никак не хотел выполняться. Заработало только после добавления разрешения запуска rrdtool в файл /etc/sudoers:
ALL ALL=(root) NOPASSWD:/usr/bin/rrdtool

понедельник, 30 декабря 2013 г.

Организация системы мониторинга сети с помощью пакетов SNMP и SNMPTT.

Систему мониторинга разворачиваем на сервере с ОС CentOS 6.3. Используемая версия SNMP - 2c.

Установка пакетов SNMP:

1. Устанавливаем пакеты из репозитария
# yum install net-snmp-utils
# yum install net-snmp

2. Сохраняем оригинальные конфигурационные файлы на всякий случай
# mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.org
# mv /etc/snmp/snmptrapd.conf /etc/snmp/snmptrapd.conf.org

3. Создаем новый файл конфигурации демона SNMPD. Этот демон отвечает за работу запросов и ответов протокола SNMP. Работает на 161 порту.
# nano /etc/snmp/snmpd.conf
и вписываем туда:
rocommunity  public
syslocation  "Samara"
syscontact  rtech@samara.ttk.ru

4. Создаем новый файл конфигурации демона SNMPTRAP. Этот демон отвечает за прием snmptrap. Работает на 162 порту.
# touch /etc/snmp/snmptrapd.conf
Вписываем в файл:
authCommunity   log,execute,net public
logoption f /var/log/snmptrap.log
Второй строчкой указываем путь логов демона snmptrapd.
ПРИМЕЧАНИЕ: Если необходимо, что бы программа Net-snmp принимала вообще все SNMP TRAP (без учета авторизаций), то необходимо после строчки authCommunity вписать строчку:

disableAuthorization yes

5. Запускаем сервис SNMPD и SNMPTRAP и добавляем в автозагрузку
# /etc/init.d/snmpd start
# chkconfig snmpd on
# service snmptrapd start
# chkconfig snmptrapd on

6. Проверяем, что сервисы запустились и работают на 161 и 162 порту:
# netstat -ltupn | grep snmp
tcp   0 0 127.0.0.1:199     0.0.0.0:*      LISTEN      24867/snmpd        
udp   0 0 0.0.0.0:161       0.0.0.0:*                  24867/snmpd        
udp   0 0 0.0.0.0:162       0.0.0.0:*                  24880/snmptrapd   

7. Разрешаем хождение пакетов в iptables. Так как сервер используется в локальной сети, можно вообще убрать все правила, закомментировав их в файле /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#-A INPUT -p icmp -j ACCEPT
#-A INPUT -i lo -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Затем  рестартуем iptables:
# service iptables restart

8. Отключаем SElinux, для этого открываем файл /etc/sysconfig/selinux 
# nano /etc/sysconfig/selinux 
Оставляем одну строку, остальное комментируем:
SELINUX=disabled

9. Перезагружаемся командой 
# reboot 
и убеждаемся, что после перезагрузки демоны SNMPD и SNMPTRAP стартовали.

Проверка работы пакетов SNMP:

Для проверки работы SNMP нужно сетевое устройство, работающее по SNMP, например коммутатор D-Link.  Коммутатор D-Link должен быть корректно настроен для работы с SNMP. Пример настройки SNMP на коммутаторе D-Link в случае использования стандартных community (private и public).
enable snmp traps 
enable snmp authenticate traps 
enable snmp linkchange_traps
config snmp linkchange_traps ports all enable
config snmp coldstart_traps enable
config snmp warmstart_traps enable
config snmp system_name SMA-Mos4a-S2
config snmp system_location Samara. Moskovskoe shosse,4
config snmp system_contact rtech@samara.transtk.ru
enable rmon 
create snmp community private view CommunityView read_write
create snmp community public view CommunityView read_only
create snmp host 10.200.16.230 v2c  public 

1. Проверяем работоспособность демона SNMPD, делая пробный запрос административного статуса портов к любому свичу D-Link, например:
# snmpwalk -v 2c -c public 10.200.72.12 IF-MIB::ifAdminStatus 
Вывод должен показать примерно следующее:
IF-MIB::ifAdminStatus.1 = INTEGER: up(1)
IF-MIB::ifAdminStatus.2 = INTEGER: up(1)
IF-MIB::ifAdminStatus.3 = INTEGER: up(1)
IF-MIB::ifAdminStatus.4 = INTEGER: up(1)
IF-MIB::ifAdminStatus.5 = INTEGER: up(1)
IF-MIB::ifAdminStatus.6 = INTEGER: up(1)
IF-MIB::ifAdminStatus.7 = INTEGER: up(1)
IF-MIB::ifAdminStatus.8 = INTEGER: up(1)
IF-MIB::ifAdminStatus.9 = INTEGER: down(2)
IF-MIB::ifAdminStatus.10 = INTEGER: down(2)
IF-MIB::ifAdminStatus.1083 = INTEGER: up(1)
IF-MIB::ifAdminStatus.1088 = INTEGER: up(1)
IF-MIB::ifAdminStatus.1095 = INTEGER: up(1)
IF-MIB::ifAdminStatus.1104 = INTEGER: up(1)
IF-MIB::ifAdminStatus.1428 = INTEGER: up(1)
IF-MIB::ifAdminStatus.3023 = INTEGER: up(1)
IF-MIB::ifAdminStatus.3024 = INTEGER: up(1)
IF-MIB::ifAdminStatus.5121 = INTEGER: up(1)

2. Передернув любой порт свича наблюдаем наличие логов в файле /var/log/snmptrap.log. 
# cat /var/log/snmptrap.log
2013-11-19 15:12:51 <UNKNOWN> [UDP: [10.200.72.43]:161->[10.200.16.227]]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (11642652) 1 day, 8:20:26.52   SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkDown  IF-MIB::ifIndex.19 = INTEGER: 19        IF-MIB::ifAdminStatus.19 = INTEGER: up(1) IF-MIB::ifOperStatus.19 = INTEGER: down(2)
2013-11-19 15:12:53 <UNKNOWN> [UDP: [10.200.72.43]:161->[10.200.16.227]]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (11642655) 1 day, 8:20:26.55   SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkUp    IF-MIB::ifIndex.19 = INTEGER: 19        IF-MIB::ifAdminStatus.19 = INTEGER: up(1) IF-MIB::ifOperStatus.19 = INTEGER: up(1)
Этим убеждаемся, что демон SNMPTRAPD работает.

Устанавливаем пакет SNMPTT (пакет удобной работы с SNMP TRAPами)

1. Добавляем репозитарий
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

2. Устанавливаем
# yum install snmptt
# yum install net-snmp net-snmp-utils net-snmp-perl

3. Открываем файл настроек SNMPTT /etc/snmp/snmptt.ini 
# nano /etc/snmp/snmptt.ini
и меняем следующие строчки:
mode = daemon #(по умолчанию mode = standalone)
net_snmp_perl_enable = 1 #(по умолчанию 0)
mibs_environment = ALL #(по умолчанию закомментировано)
date_time_format = %Y-%m-%d %H:%M:%S #(по умолчанию не задано)

4. Открываем конфигурационный файл snmptrapd.conf демона SNMPTRAP.
# nano /etc/snmp/snmptrapd.conf
и вписываем в конец директиву
traphandle default /usr/sbin/snmptthandler
Эта директива, заставляет  демон snmptrapd работать с snmptt и все приходящие трапы передавать на анализ процессу snmptt.
Что бы не плодить лишних логов, можно закомментировать строку:
#logoption f /var/log/snmptrap.log
В этом случае логи процесса SNMPTRAP собираться не будут. Все сообщения будет обрабатывать процесс SNMPTT.

5. Запускаем сервис snmptt командой:
# service snmptt start

6. Добавляем сервис snmptt в автозагрузку
# chkconfig --add snmptt
# chkconfig --level 2345 snmptt on

7. Рестартуем сервисы SNMPD и SNMPTRAPD:
# service snmpd restart
# service snmptrapd restart

8. Настраиваем SNMPTT на прием всех возможных трапов. Для этого необходимо внести изменения в файл конфигурации принимаемых трапов /etc/snmp/snmptt.conf.
Резервируем копию оригинального файла:
# cp /etc/snmp/snmptt.conf /etc/snmp/snmptt.conf.org
Открываем файл /etc/snmp/snmptt.conf
# nano /etc/snmp/snmptt.conf
Удаляем все, что там имеется и вписываем:
EVENT Samara_alarm .* "all" 1
NODES 10.200.0.0/16
NODES 10.199.0.0/16
NODES 10.198.0.0/16
FORMAT $+*
Первой строчкой обозначаем, что мы принимаем все трапы, что все трапы будут иметь метку Samara_alarm и будут иметь первый приоритет. Далее обозначается, что разрешено принимать трапы с ip сетей 10.200.0.0./16, 10.199.0.0./16, 10.198.0.0/16. Последняя строчка определяет расширенный вид SNMP TRAP в логах.

9. Делаем файл логов snmptt доступным для процесса snmptt:
# chmod 777 /var/log/snmptt/snmptt.log

10. Рестартуем сервис snmptt
# service snmptt restart

11. После описанных выше действий процесс snmptt принимает все поступающие в систему SNMP трапы, преобразует их в удобный формат и складывает в папку /var/log/snmptt/.
/var/log/snmptt/snmptt.log – здесь хранятся поступающие трапы
/var/log/snmptt/snmpttsystem.log – здесь хранятся логи работы самого сервиса snmptt

Настраиваем SNMPTT на работу с базой данных MySQL

1. Создаем базу данных и  таблицы MySQL, в которые будут собираться SNMPTRAPы.
Подключаемся к MySQL
# mysql -uroot –p
Создаем базу данных «snmptt»:
>CREATE DATABASE `snmptt` DEFAULT CHARACTER SET utf8;
Создаем таблицы базы данных:
>USE `snmptt`;
>CREATE TABLE IF NOT EXISTS `snmptt` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `eventname` varchar(50) DEFAULT NULL,
  `eventid` varchar(50) DEFAULT NULL,
  `trapoid` varchar(100) DEFAULT NULL,
  `enterprise` varchar(100) DEFAULT NULL,
  `community` varchar(20) DEFAULT NULL,
  `hostname` varchar(100) DEFAULT NULL,
  `agentip` varchar(16) DEFAULT NULL,
  `category` varchar(20) DEFAULT NULL,
  `severity` varchar(20) DEFAULT NULL,
  `uptime` varchar(20) DEFAULT NULL,
  `traptime` datetime DEFAULT NULL,
  `formatline` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `commit` int(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
>CREATE TABLE IF NOT EXISTS `snmptt_unknown` (
  `trapoid` varchar(100) DEFAULT NULL,
  `enterprise` varchar(100) DEFAULT NULL,
  `community` varchar(20) DEFAULT NULL,
  `hostname` varchar(100) DEFAULT NULL,
  `agentip` varchar(16) DEFAULT NULL,
  `uptime` varchar(20) DEFAULT NULL,
  `traptime` varchar(30) DEFAULT NULL,
  `formatline` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Создаем пользователя базы данных с именем snmptt и с паролем passw0rdik
> create user 'snmptt'@'localhost' identified by 'passw0rdik';
> grant all privileges on snmptt.* to 'snmptt'@'localhost'; 
Выходим из MySQL
> exit

2. Прописываем в настройках snmptt доступ к базе данных MySQL
Открываем файл 
# nano /etc/snmp/snmptt.ini
и изменяем следующие строки:
# MySQL: Set to 1 to enable logging to a MySQL database via DBI (Linux / Windows)
# This requires DBI:: and DBD::mysql
mysql_dbi_enable = 1 (по умолчанию 0)
# MySQL: Username to use
mysql_dbi_username = snmptt (имя пользователя mysql)
# MySQL: Password to use
mysql_dbi_password = passw0rdik (пароль пользователя mysql)
# The date time format for the traptime column in SQL.  Defaults to
# localtime().  When a date/time field is used in SQL, this should
# be changed to follow a standard that is supported by the SQL server.
# Example:  For a MySQL DATETIME, use %Y-%m-%d %H:%M:%S.
date_time_format_sql = %Y-%m-%d %H:%M:%S (по молчанию закомментировано и не задано)

3. Рестартуем сервис snmptt
# service snmptt restart

4. Теперь snmp трапы собираются в базе данных MySQL. Убедившись, что это так, прекращаем логирование snmptrap-ов в log файл для экономии места на диске.
Открываем конфигурационный файл
# nano /etc/snmp/snmptt.ini
и меняем значение параметра:
# Set to 1 to enable text logging of *TRAPS*.  Make sure you specify a log_file
# location
log_enable = 0 (для сбора логов в файл было установлено 1)
Рестартуем сервис snmptt
# service snmptt restart

Подключаем дополнительные MIBы

1. Создаем папку в которой будем хранить mib-ы.
#mkdir /etc/snmp/mibs

2. Помещаем в папку MIB файл, например от UPS DELTA - DeltaUPS-MIB.txt.

3. Конвертируем MIB файл
# cd /etc/snmp/mibs
# snmpttconvertmib --in=DeltaUPS-MIB.txt --out=snmpttupsdelta.cong
Получился файл snmpttupsdelta.cong

4. Подключаем этот файл в настройки демона SNMPTT
Открываем файл snmptt.ini:
#nano /etc/snmp/snmptt.ini
Пролистываем файл в самый конец и находим строку snmptt_conf_files=<<END. Вписываем туда путь к нашем созданному файлу
[TrapFiles]
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file).  The COMPLETE path
# and filename.  Ex: '/etc/snmp/snmptt.conf'
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/mibs/snmpttupsdelta.cong
END

5. Рестартуем сервис:
# service snmptt restart

6. Теперь при пропадании электропитания в базе будет запись:
.1.3.6.1.4.1.2254.2.4.20.0.3
WARNING: Power failed! The UPS is operating on battery power.


ВАЖНО:
1) Для корректной работы системы сбора SNMPTRAPов, необходимо иметь точную работу сервера времени в системе.
2) При написании руководства предполагалось, что сервер LAMP установлен в системе.


ПОЛЕЗНЫЕ ССЫЛКИ:

http://www.netping.ru/view.aspx?id=284  - Получение TRAP сообщений на устройствах NetPing под FreeBSD

http://hobbymods.ru/index.php?dn=article&to=art&id=80  - Настройка отправки SNMP traps на некоторых типах коммутаторов.

http://www.opennet.ru/tips/info/2317.shtml   - Организация приема SNMP trap’ов и их отправки на коммутаторах DLink

http://va0816.blogspot.ru/2013/06/zabbix-snmp-traps.html  - Настройка Zabbix SNMP traps