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

Установка и настройка 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
-------------------------------------------

Следующая запись

Предыдущая запись

Похожие записи

Комментарии

  1. Zedisdead

    Zedisdead на 16.05.2011 13:59

    Товарищ! Ты, если можно так выразиться, made my day, расписав весь процесс понятнее,чем не оф. сайте. За что тебе здоровья и всяческих плюшек в жизни.

  2. puggy

    puggy на 14.09.2011 14:08

    Здравствуйте, вопрос по пункту "Если еще хотите добавить проверку MySQL, то:". На удаленном сервере при установке пакета nagios-plugins не появляется бинарника check_mysql. Что необходимо для этого сделать?

  3. puggy

    puggy на 15.09.2011 13:32

    На тестовом сервере попробовал установить один mysql, без nrpe плагинов и xinetd. С главного сделал check_mysql и все работает. По идее зачем тогда нужен nrpe хм...

  4. Александр

    Александр на 15.09.2011 21:16

    Ну нагиос же используется не только для мониторинга mysql, для мониторинга некоторых системных ресурсов сервера часто нужно ставить и nrpe.

Пингбэки

Оповещения открыты.

Трэкбэки

URL архива

Only authorized users can post comments