Установка и настройка Nagios 2.5 из исходников. | Выделенный сервер своими руками

Установка и настройка Nagios 2.5 из исходников.

Частенько у многих владельцев сайтов, web-мастеров, системных администраторов, и, конечно же, владельцев выделенных серверов возникает вопрос: "Действительно ли мой сайт (сервер) доступен в сети в режиме 24/7/365", - как это заявляют многие хостеры. Также частенько возникают вопросы доступности других сервисов, например таких как smtp, pop3, sshd, mysql, named. Плюс хотелось бы иметь возможность мониторинга нагрузки на сервер.
Все вышеперечисленные возможности предоставляет такой отличный пакет как Nagios. Попробуем разобраться с его установкой и настройкой.
Устанавливать Nagios будем из исходников. Документация по его установке и настройке можно найти на официальном сайте сайте Nagios. В перечне документации можно увидеть также ссылки на руский перевод. Но с тех пор прошло уже достаточно много времени, установка стала значительно проще, да и версия пакета уже ушла далеко за 1.0. Поэтому кратко опишу сам процесс установки из исходников для версии 2.5.
Итак приступим!
Заходим в консоль и выполняем следующие команды:

cd /usr/local/src
wget http://kent.dl.sourceforge.net/sourceforge/nagios/nagios-2.5.tar.gz
tar zxvf nagios-2.5.tar.gz
cd nagios-2.5

теперь нам нужно создать пользователя от которого будет запускаться nagios:
adduser nagios
Создаем каталог для инсталляции и меняем владельца и группу этого каталога на nagios:
mkdir /usr/local/nagios
chown nagios.nagios /usr/local/nagios

Далее узнаем от имени какого юзера запускается apache на нашем сервере:
grep "^User" /etc/httpd/conf/httpd.conf - путь до файла httpd.conf может отличаться, но у меня он такой.
Теперь хитрый ход. Создаем еще одну группу (название любое) и в эту группу включаем пользователя nagios от имени которого будет работать nagios и пользователя от имени котрого работает apache. В нашем случае это пользователь apache.
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -G nagcmd apache
/usr/sbin/usermod -G nagcmd nagios

Таким образом получается что apache и nagios принадлежат одной группе.
И, наконец, запускаем конфиг и мэйк:

./configure
make all
make install
make install-init
make install-config

Причем команда make install-init выполняет установку скрипта автоматического запуска nagios при загрузке сервера, а make install-config записывает в каталог /usr/local/nagios/etc примеры конфигурационных файлов.
На этом установка самого nagios закончена, но этого еще мало.
теперь нам нужно установить плагины - собственно скрипты для проверки состояния сервисов и служб:
cd /usr/local/src/
wget http://superb-west.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.3.tar.gz
tar zxvf nagios-plugins-1.4.3.tar.gz
cd nagios-plugins-1.4.3
./configure
make
make install

Плагины установлены.
Перейдем к настройке веб-интерфейса.
открываем файл httpd.conf и добавляем следующие строки:
vi /etc/httpd/conf/httpd.conf

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
Сохраняемся и даем команду apache перечитать свой конфиг:
service httpd reload
Создаем файл /usr/local/nagios/etc/htpasswd.users - это файл паролей для авторизации при доступе к каталогу nagios.
htpasswd -c /usr/local/nagios/etc/htpasswd.users admin

На этом настройка веб интерфейса закончена. Перейдем к настройке nagios.
Переходим в каталог /usr/local/nagios/etc. Там мы видим несколько файлов, которые заканчиваются на *-sample. Это примеры конфигов, которые мы и будем редактировать.
cp nagios.cfg-sample nagios.cfg - основной конфигурационный файл nagios.
Открываем его в редакторое.
vi nagios.cfg
Ищем строку
cfg_file=/usr/local/nagios/etc/checkcommands.cfg
комментируем
#cfg_file=/usr/local/nagios/etc/checkcommands.cfg
То же самое для такой строки:
cfg_file=/usr/local/nagios/etc/misccommands.cfg
на
#cfg_file=/usr/local/nagios/etc/misccommands.cfg
Сохраняемся и выходим.

Вот тут вот и начинается самое интересное, но об этом - через пару дней. :-)

Продолжим настройку nagios. В файле nagios.cfg есть вот такая строка:
cfg_file=/usr/local/nagios/etc/minimal.cfg
Это значит, что конфигурационный файл для описания хостов, сервисов и команд проверки находится в файле minimal.cfg. На самом деле для большого количества проверяемый серверов либо сервисов, лучше разделить конфиги на несколько файлов, отдельно описание команд проверки, отдельно описание групп пользователей, шаблонов, хостов и многого другого, но для примера выберем самый простой конфиг. Главное же - принцип, а с отсальным уже достаточно легко разобраться.
Итак, копируем файл с примером в файл с необходимым нам именем, прописанным в nagios.cfg:
cp minimal.cfg-sample minimal.cfg
И открываем его на редактирование:
vi minimal.cfg

Первым нам попадается определение timeperiod.
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
}
Имя у него "24x7" краткое описание "24 Hours A Day, 7 Days A Week" и далее описаны интервалы времени для дней недели в которые можно будет оповещать администратора о проблема. В нашем случае оповещение всегда.
Далее идет секция описания команд проверки и реакции:
рассмотрим например команду:
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 99,99% -c 100,100% -p 1
}

Называется команда check-host-alive. А выполнятся будет на самом деле плагин check_ping со своими параметрами.
Список плагинов находится в /usr/local/nagios/libexec.
Далее идет секция контактов:
define contact{
contact_name nagios-admin
alias Nagios Admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email kpterik@gmail.com
}

contact_name - имя контакта
alias - краткое описание контакта;
service_notification_period 24x7 - это в какое время оповещать при сбое сервисов (помните выше мы описали time_period);
host_notification_period 24x7 - это то же самое, но для хостов;
service_notification_options w,u,c,r - опции оповещения для сервисов;
host_notification_options d,r - то же самое для хостов;
service_notification_commands notify-by-email - как посылать оповещение (в нашем случае по email);
host_notification_commands host-notify-by-email - то же самое для хоста;
email admin@domain.com - собственно email адрес куда слать оповещения;
Несколько слов про опции оповещения.
Для сервисов опции следующие:
w оповещать при получении состояния WARNING после проверки сервиса;
u оповещать при получении состояния UNKNOWN;
c оповещать при получении состояния CRITICAL;
r оповещать при получении состояния OK;
f оповещать при получении состояния мерцания (сервис поднялся и упал за короткий период времени);
n не оповещать.

Для хостов опции следующие:
d оповещать при получении состояния DOWN;
u оповещать при получении состояния UNREACHABLE;
r оповещать при получении состояния UP (восстановление работоспособности);
f оповещать при получении состояния мерцания;
n не оповещать.

Далее идет описание групп:
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagios-admin
}
Группа называется admins и в ней один член nagios-admin.
Далее идет описание шаблона для хостов:
define host{
name generic-host ; The name of this host
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information acro
retain_nonstatus_information 1 ; Retain non-status information
register 0 ; DONT REGISTER THIS DEFINITION
}

name generic-host; имя шаблона хоста;
notifications_enabled 1 ; оповещение включить
event_handler_enabled 1 ; для каждого события можно описать реакцию. Например при дауне сервиса его перезаргузка.
flap_detection_enabled 1 ; обнаруживать мерцание
failure_prediction_enabled 1 ; прогноз неудачи (на самом деле не знаю что это такое)
process_perf_data 1 ; сбор статистика об эффективности работы процессов
retain_status_information 1 ; сохранить статусную информацию хоста между рестартами nagios
retain_nonstatus_information 1 ; сохранить нестатусную информацию хоста между рестартами nagios
register 0 ; не регистрировать это описание как хост - это шаблон
Теперь описываем сам хост.
define host{
use generic-host ; Name of host template
host_name localhost
alias localhost
address 127.0.0.1
check_command check-host-alive
max_check_attempts 10
check_period 24x7
notification_interval 120
notification_period 24x7
notification_options d,r
contact_groups admins
}

max_check_attempts количество попыток повторной проверки хоста при ошибке
notification_interval время в минутах через которое отправлять повторно уведомление о дауне
Далее описание группы хостов:
define hostgroup{
hostgroup_name test
alias Test Servers
members localhost
}

Далее идет описание шаблона для сервисов, ну и самих сервисов. Описание аналогично описанию хоста, за исключением команд проверки. Ничего сложного там нет.
После редактирования фала конфигурации нам нужно проверить правильность конфигурации. Делать это можно с помощью команды:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
После исправления ошибок можно запускать nagios
service nagios start
Все. Теперь обратившись на нашем сервере браузером по адресу http://нашдомен/nagios/ и введя имя и пароль мы увидим статистику работы наших хостов и сервисов.

Какие >=500 серверов? Даже

Какие >=500 серверов? Даже при 140 узлов и более 600 сервисов наблюдаются проблемы в Nagios 2.12, ветку 3.0 на продакшен ставить не хочется, за это время она никак не могла стать стабильной.
А проблемы следующие:
1. не даёт создавать комментарии.
2. не даёт коментировать и снимать комментарии с проверки и оповещения сервисов.
3. теряет логи (иногда по 2, иногда по 3 дня в текущем месяце).

Аппаратная часть исправная, сервер проработал 2 года с небольшим. Сейчас не знаю что делать, может Zabbix поставить? :(

у меня вопрос такого рода я

у меня вопрос такого рода
я заступорился в процесе инстала...
на моменте :
"
Плагины установлены.
Перейдем к настройке веб-интерфейса.
открываем файл httpd.conf и добавляем следующие строки:
vi /etc/httpd/conf/httpd.conf
"
когда добавля ю строки в "хттпд.конф"
после комманды apachectl configtest
выдает такое :
The ScriptAlias directive in /etc/httpd/conf/httpd.conf at line 1002 will probably never match because it overlaps an earlier Alias.
Syntax error on line 1004 of /etc/httpd/conf/httpd.conf:
AllowOverride not allowed here

в чем проблема ?

Жаль =(

Жаль =(

К сожалению не могу Вам

К сожалению не могу Вам помочь в этом вопросе. :-( Не разбирался с ними особенно.

admin, ответь плиз

admin, ответь плиз

Можешь поподробней рассказать

Можешь поподробней рассказать как пользоваться пассивными проверками?

у меня Nagios 3.0b3

у меня Nagios 3.0b3

1. В файле nagios.cfg есть

1. В файле nagios.cfg есть вот такая строка:
cfg_file=/usr/local/nagios/etc/minimal.cfg
Это значит, что конфигурационный файл для описания хостов, сервисов и команд проверки находится в файле minimal.cfg

Остальные строки, которые касаются размещения конфигурационных файлов закомментировать.
2. Вы уверены что Ваша версия Nagios выше 2.5
3. Был разобран самый простой случай.
4. Пожалуйста прочитайте внимательно всю заметку.

согласно вашему примеру

согласно вашему примеру nagios-a все так просто я конфигурировал поночалу по вашему примеру и как оказалось что тут то и конфигурацией одного файла не обходится как я и писалвыше что также необходимо сконфигить и такие файлы если опишите на примере как можно сконфигурировать правильно эти файлы когда конфигурировал на вашем примере то не получилось сконфигурировать на других примерах именно эти конфиги не выходит помогите с этим вопросом как сконфигить resource.cfg hosts.cfg,contactgroups.cfg,hostgroups.cfg services.cfg и где добовлять в httpd.conf описаное выше т.к. комп с линухой видит в хостах только себя и апач не запускается мне просто надо добовлять маршрутизаторы и следить за ними.
согласно другим примерам установки nagios-plugins можно и устанавливать также в каталоге usr/src разницы почти и нет

В нашем примере мы все

В нашем примере мы все описываем в одном файле. Если Вы хотите разделить - то никаких проблем. Просто создайте соответствующие файлы и опишите в них хосты, группы и так далее точно так же как это описано в примере выше.

Мне бы интересно было бы

Мне бы интересно было бы посмотреть как конфигурируются остальные конфиги hosts.cfg,contactgroups.cfg,hostgroups.cfg и тд

Я бы с интересом послушал о

Я бы с интересом послушал о вариантах подключения нагиоса 2.5 к MySQL при этом интересно хранить там логи а не содержимое конфов

Ну, во-первых, тема блога не

Ну, во-первых, тема блога не совсем о том, вернее совсем не о том. Очень сильно я сомневаюсь, что у кого-то из владельцев (прошу заметить не хостеров) выделенных серверов бывает более 500 серверов. А во вторых было бы очень инетересно послушать от знающих людей, что же это за мониторилки которые по Вашему мнению нормальные.
А nagios используют очень многие конторы, и он еще как-то не подводил. Конечно при количестве серверов менее 500. Такого опыта у меня к сожалению нет.

Нет очень. Те кто имеет > 500

Нет очень. Те кто имеет > 500 серверов пользуюся нормальными мониторилками

Уверен что это будет кому-то

Уверен что это будет кому-то интересно, кроме тебя?

Лучше напиши какие есть

Лучше напиши какие есть вебморды для руления наджиосом при >500 серверов ;)