Задача: организовать легальный (не крякнутый) и бесплатный мониторинг работоспособности PBX.
Эта статья не претендует на сто процентов удачное решение, но что есть, то есть. Если у вас более умные варианты, то предлагайте - вместе можно довести до ума.

Перелопатив интернет ресурсы по данной теме, я ничего более подходящего, чем Nagios+Snmptt не нашел. Поэтому и решил мониторить все это безобразие через opensource систему мониторинга NAGIOS (в этой статье я не буду описывать все ее характеристики, а их достаточно много) и SNMPTT (SNMP Trap Translator http://www.snmptt.org/ ). Последняя, как видно из названия, нужна для расшифровки SMI пакетов, которые будет нам отсылать медеасервер AVAYA, например S8400. В примере будет использована OS Debian, начнем:

 

1. Ставим пакеты (некоторые не обязательные, но полезные - поэтому я их поставил)


#apt get install apache2-mpm-prefork
#apt get install sshfs
#apt get install ntp
#apt get install samba
#apt get install make
#apt get install gcc
#apt get install g++
#apt get install mysql-server
#apt get install mysql-client
#apt get install linux-kernel-headers or linux-headers-2.6.18-6.686 (#uname -r)
#apt get install fuse-utils
#apt get install bzip2
#apt get install ftp
#apt get install ftpd
#apt get install tcpdump
#apt get install nmap
#apt get install phpmyadmin
#apt get install snmp
#apt get install snmpd
#apt get install perl
#apt get install libconfig-inifiles-perl
#apt get install libnet-snmp-perl
#apt get install libsnmp-base
#apt get install libsnmp9
#apt get install libgd2-xpm
#apt get install libgd2-xpm-dev
#apt get install libgd2-dev
#apt get install libpng12-dev
#apt get install libjpeg62-dev
#apt get install libgd-tools
#apt get install libpng3-dev


2. Приступаем к установке NAGIOS

Оригинал статьи http://www.debianhelp.co.uk/nagiosinstall.htm

Скачиваем дистрибутив http://www.nagios.org/download/

Дополнительная документация http://www.nagios.org/docs/

Скриншоты программы http://www.nagios.org/about/screenshots.php

Часто задаваемые вопросы http://www.nagios.org/faqs/

(для установки из исходных кодов обязательно наличие в системе пакетов make gcc g++)

Создаем пользователя и группу nagios


#adduser nagios

эта команда создаст аккаунт и его дефолтную группу, с таким же названием. Это можно проверить, выполнив команду:


# grep nagios /etc/passwd

Должна распечататься группа (если она существует) со списком ее членов. Если группа отсутствует, то ее можно создать вручную:


# groupadd nagios

Так как считаем, что сервер apache уже установлен и работает, то надо определить имя пользователя, от которого он работает:


# grep "^User" /etc/apache2/apache2.conf

Добавим пользователя web-сервера (www-data/apache) и пользователя Nagios (nagios)


# usermod -G nagios nagios
# usermod -G www-data,nagios www-data

Проверьте, что пользователи стали членами групп:


# grep nagios /etc/group

Создаем директорию для инсталляции:


# mkdir /usr/local/nagios

Меняем владельца данной директории:


# chown -R nagios:nagios /usr/local/nagios

Теперь необходимо установить GD-Utils, чтобы корректно работала карта статуса сети (Status Maps) Для Debian необходимо установить следующие библиотеки:


# apt-get install libgd2-xpm libgd2-xpm-dev libgd2 libgd2-dev libpng12-dev
# apt-get install libjpeg62-dev libgd-tools libpng3-dev

(их мы установили в 1-м пункте) Теперь скачиваем GD-Utils: http://www.boutell.com/gd/http/gd-2.0.33.tar.gz Распаковываем tar архив:


# tar zxvf gd-2.0.33.tar.gz

Меняем текущую дерикторию на gd-2.033 и запускаем конфигурационный скрипт:


# cd gd-2.033
# ./configure

После этого компилим и устанавливаем:


# make && make install

Скачиваем последнюю версию nagios http://www.nagios.org/download/ Извлекаем архив


# tar zxvf nagios-2.6.tar.gz

Заходим в созданную при извлечении папку:


# cd nagios-version (nagios-2.6)

Запускаем скрипт конфигурации:


# ./configure --prefix=/usr/local/nagios
--with-cgiurl=/nagios/cgi-bin
--with-htmurl=/nagios/
--with-nagios-user=nagios
--with-nagios-group=nagios
--with-command-group=nagios

, где

--prefix=/usr/local/nagios рутовая папка программы

--with-cgiurl=/nagios/cgi-bin папка Nagios CGI скриптов

--with-htmurl=/nagios/ папка Nagios HTML/Website

--with-nagios-user=nagios имя пользователя

--with-nagios-group=nagios группа пользователя

--with-command-group=nagios командная группа Nagios в которую входят пользователи Apache и Nagios.

Далее

# make all (скомпилируется Nagios и CGI скрипты)

# make install (эта команда произведет инсталляцию бинарных файлов и файлов WEB-сервера [документацию и web-страницы])

# make install-init (утанавливаем скрипты автозапуска)

# make install-commandmode (это создаст требуемые директории для командных файлов и назначит им соответствующие права)

# make install-config (это установит *SAMPLE* конфигурационные файлы в директорию /usr/local/nagios/etc .

Перед запуском Nagios их надо изменить На этом установка Nagios завершена, теперь можно познакомиться со структурой каталогов


# cd /usr/local/nagios

Мы увидим 5 поддиректорий:

bin/ Nagios ядро програмы

etc/ Main, resource, object, and CGI конфигурационные файлы

sbin/ CGIs share/ файлы HTML (для web-интерфейса и документации)

var/ пустая директория для лог-файлов, статус-файлов и других фременных файлов

var/archives пустая директроия для хранения архивов лог файлов

var/rw пустая директория для внешних командных файлов

Нас больше всего интересует каталог /usr/local/nagios/etc, т.к. тут хранятся конфигурационные файлы:

Установим Nagios Plugins: Плагины обычно устанавливаются в каталог libexec, т.е. в нашем случае /usr/local/nagios/libexec

Скачиваем последнюю версию: http://sourceforge.net/projects/nagiosplug/ Извлекаем


# tar -zxvf nagios-plugins-.tar.gz [here nagios-plugins-1.4.5.tar.gz]
# cd nagios-plugins-1.4.5
# ./configure
# make && make install

После этого плагины установятся в каталог /usr/local/nagios/libexec Существуют несколько основных правил для файлов плагинов. Все плагины поддерживают опцию --help, результатом которой будет справка по его работе. Например

/usr/local/nagios/libexec# ./check_ssh -h
check_ssh (nagios-plugins 1.3.0-alpha1)  1.1.1.1
The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute
copies of the plugins under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
Copyright (c) 1999 Remi Paulmier
Usage:
check_ssh -t [timeout] -p [port]  check_ssh -V prints version info
check_ssh -h prints more detailed help by default, port is 22

Из вывода видно, что плагин check_ssh имеет один обязательный параметр HOST, и 2 дополнительных (не обязательных) TIMEOUT и PORT

В итоге структура получилась следующая:

bin/ Nagios ядро програмы

etc/ Main, resource, object, and CGI конфигурационные файлы

sbin/ CGIs share/ файлы HTML (для web-интерфейса и документации)

var/ пустая директория для лог-файлов, статус-файлов и других фременных файлов

var/archives пустая директроия для хранения архивов лог файлов

var/rw пустая директория для внешних командных файлов

libexec/ папка для nagios плагинов

Теперь настало время сконфигурировать web-интерфейс для nagios. Создадим Alias для web-интерфейса и для CGIs Создаем конфигурационный файл в директории /etc/apache2/sites-available/ (копируем и вставляем ниже приведенный файл)


# cat /etc/apache2/sites-available/nagios
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Alias /nagios /usr/local/nagios/share
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Делаем данный сайт доступным:

# a2ensite nagios

этот скрипт создаст символическую ссылку файла /etc/apache2/sites-available/nagios в директорию /etc/apache2/sites-enabled/ Перезапустим apache


# /etc/init.d/apache2 restart

Настроим пользовательскую аутентификацию


# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

вводим новый пароль, это создаст файл htpasswd.users в папке /usr/local/nagios/etc/

По аналогии можно создать дополнительных пользователей.

(ВНИМАНИЕ: необходимо удалить префикс -c в команде htpasswd для добавления дополнительных пользователей)

Правим файл /usr/local/nagios/etc/cgi.cfg, устанавливаем параметр use_authentication=1

Теперь можно подключиться к программе: http:///nagios/

Чтобы корректно работала страница 3D сети необходимо доустановить любой VRML client/plugin для своего web-браузера (http://cic.nist.gov/vrml/vbdetect.html). Без него браузер будет пытаться сохранить файл statuswrl.cgi при попытке открыть 3D карту сети.

Для автозапуска создаем загрузочный скрипт в папке /etc/init.d/, например nagios, и создаем линк:



#ln -s /etc/init.d/nagios /etc/rc2.d/S92nagios
# cat /etc/init.d/nagios
#!/bin/sh
/usr/local/nagios/bin/nagios --daemon /usr/local/nagios/etc/nagios.cfg
# chmod 666 /usr/local/nagios/var/objects.cache

Теперь нам осталось настроить конфигурационные файлы nagios. Это очень важный момент, но к нему вернемся после установки SNMPTT

3. Ставим SNMPTT

Инструкция взята с оф.сайта программы http://www.snmptt.org/docs/snmptt.shtml#Installation-Overview

, там можно почитать более подробно.

Основные этапы по установке и настройке SNMPTT:

- Устанавливаем Net-SNMP и SNMPTT

- Создаем файл snmptt.conf (вручную или используя скрипт snmpttconvertmib).Второй вариант у меня почему-то не получился:)

- Модифицируем файл snmptt.ini

- Запускаем SNMPTT

- Настраиваем PBX на отправку SMI c аварийными сообщениями на машину с установленными Net-SNMP / SNMPTT пакетами

- Инициируем тестовый trap и проверяем логфайлы SNMPTT

- Настраиваем защиту



1. Знакомимся с инструкцией, чтобы понимать, как работает snmptt.

2. Копируем snmptt в папку /usr/sbin и меняем ей флаг изполняемости (# chmod +x snmptt)

3. Копируем snmptthandler в /usr/sbin/ и меняем ей флаг изполняемости (# chmod +x snmptthandler)

4. Копируем snmptt.ini в /etc/snmp/ или в /etc/ и редактируем опции в данном сайте

5a. Для режима standlone: Добавляем в файл snmptrapd.conf следующую сточку: traphandle default /usr/sbin/snmptt (по умолчанию, прияв trap сообщение, snmptrapd передаст его программе snmptt)

5b. Для daemon режима: Добавляем в файл snmptrapd.conf следующую сточку:

traphandle default /usr/sbin/snmptthandler # mkdir /var/spool/snmptt

Для автоматического запуска создаем файл snmptt в папке /etc/init.d/ и делаем его исполняемым

# chmod +x /etc/init.d/snmptt

Далее создаем линк

# ln -s /etc/init.d/snmptt /etc/rc2.d/S20snmptt (rc2 - мой runlevel по умолчанию, если у вас другой, то поменяйте это значение)

# cat /etc/init.d/snmptt
#!/bin/sh
start() {
echo -n $"Starting SNMPTT"
/usr/sbin/snmptt --daemon
}
stop() {
echo -n $"Stopping SNMPTT"
kill `cat /var/run/snmptt.pid` 2>/dev/null
}
reload(){
echo -n $"Reloading config file: "
kill `cat /var/run/snmptt.pid` -HUP 2>/dev/null
}
restart(){
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)
echo $"Usage: $0 {start|stop|restart|reload}"
esac
exit

Сервис snmptt запустится при следующей загрузке. А для того, чтобы загрузить немедленно, выполним команду:

# /etc/init.d/snmptt start

Для проверки, можно выполнить команду: defmon:~# ps ax|grep snmptt 2265 ? Ss 0:00 /usr/bin/perl /usr/sbin/snmptt --daemon 2266 ? Ss 0:00 /usr/bin/perl /usr/sbin/snmptt --daemon 6. Запускаем snmptrapd используя команду:

# snmptrapd -On

Вы должны подправить загрузочный скрипт /etc/init.d/snmptrapd, чтобы он запускался с опцией 0n

Note: The -On is recommended. This will make snmptrapd pass OIDs in numeric form and prevent SNMPTT from having to translate the symbolic name to numerical form. If the UCD-SNMP / Net-SNMP Perl module is not installed, then you MUST use the -On switch. Depending on the version of UCD-SNMP / Net-SNMP, some symbolic names may not translate correctly. See the FAQ for more info.

Как альтернативный вариант можно в файле snmp.conf добавить строчку printNumericOids 1 (эта настройка будет применяться в независимости от того, что использовалось в командной строке.

7. смотрим http://www.snmptt.org/docs/snmptt.shtml#SecuringSNMPTT
Настраиваем файл snmptt.ini
Данный файл можен находится в одной из папок:
/etc/snmp/
/etc/
/usr/local/etc/snmp/
/usr/local/etc/

Пример файла snmptt.ini находится в установочном пакете. Информация по настройке находится тут
Так как в нашем случае для хранения trap‑ов я использую СУБД MySQL, то предварительно необходимо создать БД и таблицы Параметры доступа к БД описываются все в том же файле snmptt.ini: To configure SNMPTT for MySQL, modify the following variables in the snmptt.ini file. mysql_dbi_enable
mysql_dbi_host
mysql_dbi_port
mysql_dbi_database
mysql_dbi_table
mysql_dbi_table_unknown
mysql_dbi_username
mysql_dbi_password

Зайдите в MySQL из под пользователя root, и выполните следующие скрипты:

CREATE DATABASE snmptt;
USE snmptt;
DROP TABLE snmptt;
CREATE TABLE snmptt (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
eventname VARCHAR(50),
eventid VARCHAR(50),
trapoid VARCHAR(100),
enterprise VARCHAR(100),
community VARCHAR(20),
hostname VARCHAR(100),
agentip  VARCHAR(16),
category VARCHAR(20),
severity VARCHAR(20),
uptime  VARCHAR(20),
traptime VARCHAR(30),
formatline VARCHAR(255));
USE snmptt;
DROP TABLE snmptt_unknown;
CREATE TABLE snmptt_unknown (
trapoid VARCHAR(100),
enterprise VARCHAR(100),
community VARCHAR(20),
hostname VARCHAR(100),
agentip  VARCHAR(16),
uptime  VARCHAR(20),
traptime VARCHAR(30),
formatline VARCHAR(255));
USE snmptt;
DROP TABLE snmptt_statistics;
CREATE TABLE snmptt_statistics (
stat_time VARCHAR(30),
total_received BIGINT,
total_translated BIGINT,
total_ignored BIGINT,
total_unknown BIGINT);

И добавьте пользователя БД 'snmptt' для работы с данными таблицами:

mysql>GRANT ALL PRIVILEGES ON *.* TO 'snmptt'@'localhost' IDENTIFIED BY 'mytrap';

4. Ставим NAGTRAP
Распаковываем архив nagtrap
Создаем обновленные таблицы, запустив mysql скрипты из папки "db"
Копируем плагин check_snmptraps.pl из папки plugins в /usr/local/nagios/libexec/check_snmptraps
Копируем модержимое папки (кроме .svn) в папку /usr/local/nagios/nagtrap (ее надо предварительно создать)
Изменяем владельца всех файлов на nagios # chown -R nagios:nagios /usr/local/nagios/ Переименовываем файл /usr/local/nagios/etc/config.ini.php-dist в /usr/local/nagios/etc/config.ini.php и редактируем, прописав параметры доступа к БД: Например,
[database]
host = "localhost"
user = "snmptt"
password = "Snmptt!"
name = "snmptt"
tableSnmptt = "snmptt"

Создаем конфигурационный файл для apache в папке /etc/apache/sites-available:

# cat /etc/apache2/sites-available

Alias /nagtrap /usr/local/nagios/nagtrap
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

5. Приступаем к настройке конфигурационных файлов SNMPTT.CONF --> http://www.snmptt.org/docs/snmptt.shtml#Configuration Optionssnmptt.ini В файловом архиве можно посмотреть примеры конфигурационных файлов . Пути:

/usr/local/nagios/nagtrap/etc/config.ini.php
/usr/local/nagios/libexec/reset-trap
/usr/local/nagios/libexec/check_snmptraps
/usr/local/nagios/libexec/eventhandlers/submit_check_result
/usr/local/nagios/etc/nagios.cfg
/usr/local/nagios/etc/cgi.cfg
/usr/local/nagios/etc/objects/commands.cfg
/usr/local/nagios/etc/avaya/s8400.cfg
/etc/init.d/apache2
/etc/init.d/snmptt
/etc/init.d/snmptrapd
/etc/init.d/snmpd
/etc/init.d/nagios
/etc/snmp/snmptrapd.conf
/etc/snmp/snmptt.conf.s8700
/etc/snmp/snmptt.ini

Доступна более удобная реализация мониторинга PBX AVAYA

Log in to comment