Автор: Правдин Владимир Юрьевич
Продолжаем пристраивать NetBSD к домашним сетям. Сегодня, на основе NetBSD 3.0 и
Nagios 2.3 составим небольшую систему мониторинга состояния оборудования домашней сети.
В данном HOWTO был использован материал статьи:
http://onix.opennet.ru/content/view/17/26/ Автор: Бешков Андрей Юрьевич
Установка
Воспользуемся пакетами:
- pkg_add jpeg-6bnb3.tgz
- pkg_add png-1.2.12.tgz
- pkg_add gd-2.0.33nb5.tgz
- pkg_add nagios-base-2.3.1.tgz
- pkg_add nagios-plugins-1.4.2.tgz
- pkg_add zlib-1.2.3.tgz
Устанавливать можно непосредственно через сеть, воспользовавшись внешним FTP, например, с помощью команды:
pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/3.0/i386/All/zlib-1.2.3.tgz
Так же необходим web-server:
- pkg_add expat-2.0.0nb1.tgz
- pkg_add apr-0.9.12.2.0.59.tgz
- pkg_add apache-2.0.59.tgz
Конфигурирование
Сделаем резервную копию файлов конфигурации и избавим их от суффикса -sample.
В итоге всех этих манипуляций должны получить в каталоге
/usr/pkg/etc/nagios следующие файлы:
-rw-r--r-- 1 root wheel 9481 Oct 21 18:25 cgi.cfg
-rw-r--r-- 1 root wheel 4816 Oct 21 18:59 checkcommands.cfg
-rw-r--r-- 1 root wheel 13783 Oct 21 17:56 minimal.cfg
-rw-r--r-- 1 root wheel 4271 Oct 21 18:26 misccommands.cfg
-rw-r--r-- 1 root wheel 30694 Oct 22 18:16 nagios.cfg
-rw-r--r-- 1 root wheel 533 Oct 21 00:47 nagios.conf
Остальные файлы конфигурации, мы создадим самостоятельно.
Создадим файл /var/objects.cache и сделаем его владельцем nagios:
vi /var/objects.cache
chown nagios:nagios /var/objects.cache
В /usr/pkg/etc/nagios нужно будет создать следующие файлы:
- services.cfg
- hosts.cfg
- hostgroups.cfg
- contacts.cfg
- contactgroups.cfg
- timeperiods.cfg
Внесём следующие изменения в nagios.cfg:
Закоментируем следующие строки:
#cfg_file=/usr/pkg/etc/nagios/minimal.cfg
#cfg_file=/usr/pkg/etc/nagios/dependencies.cfg
#cfg_file=/usr/pkg/etc/nagios/escalations.cfg
Теперь добавим в httpd.conf текст из nagios.conf.
После строчек:
AllowOverride None
Options None
Order allow,deny
Allow from all
Добавим:
#######################################################################
ScriptAlias /nagios/cgi-bin/ "/usr/pkg/libexec/nagios/cgi-bin/"
Alias /nagios/ "/usr/pkg/share/nagios/"
AllowOverride AuthConfig
order allow,deny
allow from all
Options ExecCGI
AllowOverride AuthConfig
order allow,deny
allow from all
########################################################################
Выполнив эту, процедуру мы создали два псевдонима. Первый - для cgi директории nagios, находящейся
в "/usr/pkg/libexec/nagios/cgi-bin/". Доступ к ней можно получить, выполнив подобный
http запрос http://ваш сайт/nagios/cgi-bin/.
Второй псевдоним указывает, что в директории
/usr/pkg/share/nagios/ находятся html
файлы web-интерфейса и справочной документации. Просмотреть эти страницы можно, посетив адрес
http://ваш сайт /nagios/. При попытке посетить эти страницы, получаем ошибку. Для того чтобы
псевдонимы и авторизация заработали, нужно создать файл
.htaccess в директории
/usr/pkg/libexec/nagios/cgi-bin/ и в
нести в него следующие строки:
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/pkg/etc/nagios/htpasswd.users
require valid-user
Для вступления в силу выполненных изменений осталось лишь перезапустить Apache.
# /usr/pkg/apache/sbin/apachectl restart
Таким образом, мы объясняем web-серверу, что доступ к файлам директории
/usr/pkg/libexec/nagios/cgi-bin/
может получить только авторизованный пользователь.
Список паролей и имен пользователей должен находится в файле
/usr/local/nagios/etc/htpasswd.users,
который на данный момент еще не существует. Заводим нового пользователя и заодно с помощью ключа c создаем файл.
# /usr/pkg/sbin/htpasswd -c /usr/pkg/etc/nagios/htpasswd.users triam
New password: ******
Re-type new password: ******
Запуск
Проверить конфигурацию Nagios можно выполнив следующее:
[root@jabber:/home/triam]#nagios -v /usr/pkg/etc/nagios/nagios.cfg
Смотрим и читаем внимательно, исправляем очепятки. Для исправления очепяток, можно смотреть в minimal.cfg.
Теперь добавим в /etc/rc.conf следующее:
apache=YES
nagios=YES
В ручную можно запускать так:
apachectl start
nagios /usr/pkg/etc/nagios/nagios.cfg
Хотел также обратить ваше внимание на то, что при запуске Nagios, сервисы, которые мы проверяем,
выйдут из состояния PENDING через 2 минуты, так что придётся подождать.
Файл
hosts.cfg
# Описываем шаблон для наших хостов
define host{
# Имя шаблона
name generic-host
#включить уведомление
notifications_enabled 1
#включить обработчик событий
event_handler_enabled 1
#включить обнаружение мерцания
flap_detection_enabled 1
#Собирать данный о производительности процесса
process_perf_data 1
#Сохранять статусную информацию между перезагрузками программы
retain_status_information 1
# Конец шаблона
register 0
}
#Опишем хост, который будем мониторить
define host{
#используем наш шаблон
use generic-host
#Имя Хоста, который будем мониторить
host_name jabber.tushino.ru
#Прозвище, можно считать коментариями
alias bsd
#IP адрес Хоста, который будем мониторить
address 192.168.1.9
# Данные команды, приводятся в оригинальном примере,
# а так же в источниках [1] и [2],
# но они приводят к постоянному и неизменному состоянию PENDING,
# т.е. "опрашиваемый".
# Тем более описания сервисов и способов их проверки,
# находятся в файле services.cfg
# check_command check-host-alive
# check_command check_ping!40,5%!80,10%
# Кол-во повторных проверок после первой неудавшейся
max_check_attempts 5
# Интервал в минутах, между повторами сообщений, о не работающем хосте
notification_interval 60
# Период времени, в течении которого сервер отсылает сообщения администрации
notification_period 24x7
# Список событий, о которых сообщает Nagios, для данного
# хоста (down, unreachable, recovery)
notification_options d,u,r
# Список контактов, определённых в contactgroups.cfg, которым
# сообщать о состоянии хоста
contact_groups firma-admins
}
Файл
services.cfg
# Всё по образу и подобию hosts.cfg: сначала, шаблон, описывающий
# сервис, затем - описание
# каждого сервиса. Именно в этом файле и задаётся способ и средства
# проверки доступности
# хоста вцелом и каждого сервиса в отдельности.
define service{
name generic-service
# Включить активные проверки
active_checks_enabled 1
# Включить пассивные проверки
passive_checks_enabled 1
# Разрешаем проверять параллельно
parallelize_check 1
# Пусть будет так, на что влияет не выяснил
obsess_over_service 1
check_freshness 0
# Всё тоже, что и в hosts.cfg
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0
}
define service{
use generic-service
# Имя хоста, который проверяете, если определяете несколько
# сервисов, для одного хоста, то имя должно совпадать
host_name jabber.tushino.ru
# Название сервиса, которое будет отображаться в таблице состояний
service_description PING
# Для стандартных сервисов лучше оставить значение 0
# К нестандартным сервисам стоит относить те сервисы, которые
# после каждой проверки автоматически возвращаются в состояние "ОК"
# вне зависимости от режима, в котором они находились до проверки.
is_volatile 0
# Период, в течение которого можно выполнять проверки
check_period 24x7
# Максимальное количество повторных проверок
max_check_attempts 3
# Интервал между нормальными проверками
normal_check_interval 1
# Интервал между повторными проверками. Применяется, если
# нормальная проверка завершилась неудачно
retry_check_interval 1
#Кого оповещать в случае чего
contact_groups firma-admins
#см. hosts.cfg
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
#Способ задания аргументов для комманды проверки, немного странный - через "!"
#Описание можно посмотреть в файле checkcommands.cfg или просто запустив программы без
#параметров, например так:
# /usr/pkg/libexec/nagios/check_http
#Значение переменной $HOSTADDRESS$ Берётся из hosts.cfg из строки address
check_command check_ping!40,20%%!80,60%%
}
#Всё тоже самое, что и для PING, но только HTTP
define service{
use generic-service
host_name jabber.tushino.ru
service_description HTTP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 1
retry_check_interval 1
contact_groups firma-admins
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_http
}
Файл
hostgroups.cfg
#Тут всё просто и понятно.
#Определяем группу
define hostgroup{
#Даём группе имя
hostgroup_name firma-servers
#Задаём прозвище или комментарий
alias Firma Servers
#Указываем членов этой группы
members jabber.tushino.ru
}
#В каждой группе, должен быть, хотя бы один хост;
#каждый хост, должен принадлежать, хоитя бы одной группе.
Файл
contacts.cfg
#Определяем контакт
define contact{
#Имя контакта
contact_name triam
#Расшифровываем, кто это triam
alias Pravdin Vladimir
#всё тот же время уведомления и события, которы стоит сообщать
service_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
#Здесь зададим способ уведомления, время и оставим свои контакты
host_notification_commands host-notify-by-email
host_notification_period 24x7
service_notification_commands notify-by-email
email admin@tushino.ru
}
Файл
contactgroups.cfg
#Определяем группу контактов
define contactgroup{
#Называем группу контактов
contactgroup_name firma-admins
#Уточняем кто это такие
alias ADMINS
#Указываем список контактов, входящих в группу контактов. Извиняюсь за тафтологию.
members triam
}
Файл
timeperiods.cfg
#Определяем временные рамки, для посылки сообщений от хостов
#За примерами обращаемся в minimal.cfg. Обычно еще используют период work, nonwork и none.
define timeperiod {
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
Файл
cgi.cfg
#Внесём только незначительные изменения
# Список пользователей, которым разрешен просмотр
# информации о работе процесса Nagios
authorized_for_system_information=triam
# Список пользователей, которым разрешен просмотр
# информации о конфигурации всех хостов и сервисов.
# По умолчанию пользователь может смотреть
# конфигурацию только хостов и сервисов,
# принадлежащих к его контактной группе.
authorized_for_configuration_information= triam
# Список пользователей, авторизованных для выполнения
# через cmd.cgi команд управления процессом Nagios.
authorized_for_system_commands=triam
# Эти два параметра определяют список пользователей, которым разрешен просмотр
# информации обо всех наблюдаемых хоста и сервисах.
# По умолчанию пользователь может видеть
# только те хосты и сервисы, которые принадлежат к его контактной группе.
authorized_for_all_services=triam
authorized_for_all_hosts=triam
# Частота обновления (в секундах) информации, просматриваемой через web-интерфейс.
# По умолчанию установлено 90 секунд, но нам такой большой интервал не подходит.
# Поэтому поставим 10 секунд.
refresh_rate=10
Файл
nagios.cfg
#Теперь в файл nagios.cfg вносим следующие изменения
# Устанавливаем формат даты более привычный для России
date_format=euro
# Включаем аутентификацию пользователей
use_authentication=1