УСТАНОВКА И НАСТРОЙКА NAGIOS И NRPE ИЗ ИСХОДНИКОВ


Версия для начинающих чайников-пингвинов. Более детальный мануал. Установка из исходников.

Ставим Nagios.
Nagios позволяет следить за серверами и сервисами, а также ведет небольшую статику по всему этому, и вы можете видеть как работает ваш сервер(а), а также получать уведомления на почту об ошибках или критических проблемах.

Создаем юзверя и даем ему пароль

/usr/sbin/useradd -m nagios
passwd nagios

Создаем группу nagcmd и даем права на исполнение команд через веб-интерфейс, добавляем пользователя nagios и apache в эту группу

/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

Скачиваем исходники Nagios-а тут:
http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz — последняя версия, которую я ставил
http://www.nagios.org/download/ — если предыдущий линк нерабочий, ищем тут
Скачиваем плагины Nagios-а тут:
http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz — последняя версия, которую я ставил
http://www.nagios.org/download/ — если предыдущий линк нерабочий, ищем тут
Распаковываем архивы Nagios-а и ставим

tar xzf nagios-3.2.1.tar.gz
cd nagios-3.2.1
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf

Измените конфигурацию Nagios-а, если не знаете, что и где крутить, поменяйте хотя бы почтовый ящик для оповещений на ваш в строке «email»

nano /usr/local/nagios/etc/objects/contacts.cfg

Убедитесь, что у вас создался файл /etc/httpd/conf.d/nagios.conf
Если нет, создаем все необходимые папки, то бишь /etc/httpd/conf.d/ и запускаем еще раз

make install-webconf

Потом, открываем конфиг Apache, у меня он лежал в /usr/local/apache/conf/httpd.conf и добавляем строчку

Include "/etc/httpd/conf.d/nagios.conf"

Рестартуем Apache

service httpd restart

Если нет ошибок и Apache стартанул нормально,- идем дальше, если нет читаем error_log или пишем сюда или в ПМ, помогу разобраться.

Ставим юзверь/пароль на веб-интерфейс Nagios-а

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

Итак юзверя мы поставили nagiosadmin (при желании можете любое другое), и пароль к нему. Запомните эту информацию, а еще лучше — запишите.

Дальше ставим плагины к Nagios-у

tar xzf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

Добавляем Nagios в boot-ер (чтобы стартовал сам после перезагрузки сервера)

chkconfig --add nagios
chkconfig nagios on

Теперь проверяем, все ли мы поставили нормально

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Если ошибок нет, — пошли дальше, если есть — пишем сюда или в ПМ, помогу разобраться.

Nagios поставлен, теперь вы можете зайти по URL-у http://ваш_домен/nagios/

Известные проблемы, после установки

1.После установки у меня не работал плагин PING, писало, что сервер «лежит», хотя остальные сервисы были «online», исправляется ошибка очень просто:

chmod u+s /bin/ping

2. При попытке задать какие-то изменения через веб-интерфейс (например перепроверить тот или иной сервис) выдавало ошибку:

Error: Could not open command file '/usr/local/nagios/var/rw/nagios.cmd' for update!
The permissions on the external command file and/or directory may be incorrect. Read the FAQs on how to setup proper permissions.
An error occurred while attempting to commit your command for processing.

Нужно сделать следующее:

chmod 777 /usr/local/nagios/var/rw/nagios.cmd

После каждого рестарта Nagios-а проблема может повториться…

3. Если стоит и активиорован SuPHP модуль — веб интерфейса вам не видать, по-крайней мере у меня после многочисленных попыток поднять его не получилось, если у кго получилось — пишите, буду очень благодарен

4. При установке nagios-plugins на моменте запуска make выдает ошибку

check_http.o: In function `check_http':
/opt/nagios-plugins-1.4.11/plugins/check_http.c:789: undefined reference to `np_net_ssl_read'
/opt/nagios-plugins-1.4.11/plugins/check_http.c:828: undefined reference to `np_net_ssl_cleanup'
/opt/nagios-plugins-1.4.11/plugins/check_http.c:785: undefined reference to `np_net_ssl_write'
/opt/nagios-plugins-1.4.11/plugins/check_http.c:734: undefined reference to `np_net_ssl_init'
/opt/nagios-plugins-1.4.11/plugins/check_http.c:736: undefined reference to `np_net_ssl_check_cert'
/opt/nagios-plugins-1.4.11/plugins/check_http.c:737: undefined reference to `np_net_ssl_cleanup'
collect2: ld returned 1 exit status
make[1]: *** [check_http] Error 1
make[1]: Leaving directory `/opt/nagios-plugins-1.4.11/plugins'
make: *** [install-recursive] Error 1

нужно запустить make distclean и переконфигурить.

Ставим NRPE и конфигурим его на удаленном сервере.
NRPE — позволяет мониторить через Nagios другие удаленные сервера, даже те, которые могут находиться в локальной сети (главный «мониторящий» сервер должен иметь доступ как в локалку, так и в инет). Чем это удобно? Вам не нужно пробегаться по всем веб-интерфейсам или конфигурить несколько серверов в FireFox плагине Nagios Checker, достаточно иметь доступ только в веб-интерфейс главного «мониторящего» сервера.

Nagios должен стоять на на главном сервере, NRPE и Nagios_plugins ставим на обоих.

Ставим XINETD и OpenSSL

yum -y install xinetd openssl-devel

Скачиваем NRPE
http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz — последняя версия, которую я ставил
http://www.nagios.org/download/ — если предыдущий линк нерабочий, ищем тут
Ставим NRPE

tar -xzf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd

Добавляем порт NRPE в список сервисов

nano /etc/services

добавляем строчки

nrpe 5666/tcp # nrpe
nrpe 5666/udp # nrpe

Перегружаем Nagios и XINETD

service nagios restart
service xinetd restart

Проверяем, правильно ли поставили NRPE

/usr/local/nagios/libexec/check_nrpe -H localhost

должно выдать

NRPE v2.12

если пишет Connection refused by host добавляем правило для порта 5666 в iptables или «ложим» iptables (как временное решения намного проще)

service iptables stop

ДО ЭТОГО МОМЕНТА Nagios И NRPE ДОЛЖНЫ СТОЯТЬ НА ОБОИХ СЕРВЕРАХ.

НА УДАЛЕННОМ СЕРВЕРЕ ОТКРЫВАЕМ

nano /etc/xinetd.d/nrpe

И МЕНЯЕМ СТРОЧКУ

only_from = 127.0.0.1

НА

only_from = 127.0.0.1 XXX.XXX.XXX.XXX

ГДЕ ВМЕСТО ХХХ.ХХХ.ХХХ.ХХХ IP АДРЕС ВАШЕГО ГЛАВНОГО СЕРВЕРА.

Перегружаем Nagios и XINETD

service nagios restart
service xinetd restart

Проверяем связь между главным и удаленным серверами, на ГЛАВНОМ сервере запускаем

/usr/local/nagios/libexec/check_nrpe -H XXX.XXX.XXX.XXX

ГДЕ ВМЕСТО ХХХ.ХХХ.ХХХ.ХХХ IP АДРЕС ВАШЕГО УДАЛЕННОГО СЕРВЕРА.
должно выдать

NRPE v2.12

Если выдало CHECK_NRPE: Error — Could not complete SSL handshake., значит нужно устанавливать NRPE c ./configure —enable-ssl параметром (смотри выше установку NRPE).

Теперь нужно добавить сервисы с УДАЛЕННОГО сервера в конфигурацию ГЛАВНОГО, для этого на ГЛАВНОМ СЕРВЕРЕ:
1. Копируем localhost.cfg файл и меняем его имя, на что-то другое.

cp -rp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/remote.cfg

2. Открываем /usr/local/nagios/etc/objects/remote.cfg НА ГЛАВНОМ СЕРВЕРЕ.
и меняем все строчки с параметром host_name с localhost на hostname удаленного сервера (или его IP).
также меняем параметр address с 127.0.0.1 на IP АДРЕС ВАШЕГО УДАЛЕННОГО СЕРВЕРА.
также меняем параметр hostgroup_name например на remote-servers
также меняем названия для следующих переменных:

check_local_disk -> check_disk1
check_local_users -> check_users
check_local_procs -> check_total_procs
check_local_load -> check_load
check_local_swap -> check_swap

3. Открываем /usr/local/nagios/etc/nagios.cfg
и добавляем /usr/local/nagios/etc/objects/remote.cfg после строчки /usr/local/nagios/etc/objects/localhost.cfg
в результате должно выглядеть так:

# Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/remote.cfg

4. Открываем /usr/local/nagios/etc/nrpe.cfg НА УДАЛЕННОМ СЕРВЕРЕ и добавляем в самый низ следующие строки (ВНИМАНИЕ, там уже будут похожие строки их или комментируем или удаляем)

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 25,15,10
command[check_disk1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 250 -c 350
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
command[check_http]=/usr/local/nagios/libexec/check_http -H 127.0.0.1 -w 5 -c 10
command[check_ssh]=/usr/local/nagios/libexec/check_ssh -H 127.0.0.1 -p 22 -t 60

ВНИМАНИЕ: если присмотреться к команде check_disk1, то вы увидите, что я указал в ее конце /dev/sda1, это имя моего диска, у вас оно может быть другим, проверьте через команду df -h в коммандной строке SSH.
5. Открываем /usr/local/nagios/etc/objects/commands.cfg НА ГЛАВНОМ СЕРВЕРЕ и добавляем в конец следующие строки:

define command{
 command_name check_disk1
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_disk1
 }
define command{
 command_name check_load
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_load
 }
define command{
 command_name check_total_procs
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_total_procs
 }
define command{
 command_name check_users
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_users
 }
define command{
 command_name check_swap
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_swap
 }

6. Проверяем конфигурацию Nagios-a

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Если ошибок нет, Перегружаем Nagios и XINETD на обоих серверах

service nagios restart
service xinetd restart

Если еще хотите добавить проверку MySQL, то:
1. НА УДАЛЕННОМ СЕРВЕРЕ создаем какого-нибудь mysql юзвера:

mysql
CREATE USER nagios IDENTIFIED BY 'nagios';

2. Открываем НА УДАЛЕННОМ СЕРВЕРЕ /usr/local/nagios/etc/nrpe.cfg и добавляем

command[check_mysql]=/usr/local/nagios/libexec/check_mysql -p 3306 -u nagios -p nagios

3. Рестартуем XINETD НА УДАЛЕННОМ СЕРВЕРЕ

service xinetd restart

4. НА ГЛАВНОМ СЕРВЕРЕ открываем /usr/local/nagios/etc/objects/commands.cfg и добавляем в конец файла

define command{
 command_name check_mysql
 command_line $USER1$/check_mysql -H $HOSTADDRESS$ -p 3306 -u $ARG1$ -p $ARG2$
 }

5. НА ГЛАВНОМ СЕРВЕРЕ открываем конфиг необходимого сервера, в нашем случае был /usr/local/nagios/etc/objects/remote.cfg (не забываем поменять HOSTNAME на имя хоста или айпишник удаленного сервера) и добавляем в конец (как вы видите check_mysql!nagios!nagios содержит юзверя и пароль созданого в MySQL на удаленном сервере)

define service{
 use local-service ; Name of service template to use
 host_name HOSTNAME
 service_description MySQL
 check_command check_mysql!nagios!nagios
 }

6. Рестартуем Nagios

service nagios restart