Настройка Nagios на NetBSD


Продолжаем пристраивать 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Комментарии (1)

...
written by napeHek on ноября 08, 2006

Вот-вот версия 3.1 придет и опробуем.

Обновлено: 13.03.2015