Nagios — программа-монитор с открытым кодом, предназначенная для проверки компьютерных систем и сетей. Отслеживает указанные узлы и службы, и оповещает администратора в том случае, если какая-либо из система прекратила или возобновила работу или недоступна.
Nagios (произносится как «нагиос»), ранее известная под именем Netsaint, разработана Этаном Галстадом (Ethan Galstad). Он же поддерживает и развивает систему сегодня, совместно с командой разработчиков. А так же они занимаются как официальными, так и неофициальными плагинами.
Первоначально Nagios была разработана для работы под Linux, но она также хорошо работает и под другими ОС, такими как Sun Solaris, AIX и HP-UX. Nagios распространяется по лицензии GPL.
Обзор возможностей
Мониторинг сетевых служб SMTP, POP3, HTTP, NNTP, ICMP, SNMP
Мониторинг состояния хостов (загрузка процессора, использование диска, системные логи). В большинстве сетевых операционных систем, даже Microsoft Windows с модулем NRPE_NT
Поддержка удаленного мониторинга через шифрованные туннели SSH или SSL
Простая архитектура модулей расширений (плагинов) позволяет, используя любой язык программирования по выбору (Shell, C++, Perl, Python, PHP и другие), легко разрабатывать свои собственные способы проверки служб
Параллельная проверка служб
Возможность определять иерархии хостов сети с помощью «родительских» хостов, позволяет обнаруживать и различать хосты, которые вышли из строя, и те, которые недоступны
Отправка оповещений в случае возникновения проблем со службой или хостом (с помощью почты, пейджера, смс, или любым другим способом, определенным пользователем через модуль системы)
Возможность определять обработчики событий произошедших со службами или хостами для проактивного разрешения проблем
Автоматическая ротация лог-файлов
Возможность организации совместной работы нескольких систем мониторинга с целью повышения надёжности и создания распределенной системы мониторинга
Включает в себя утилиту nagiostats, которая выводит общую сводку по всем хостам, по которым ведется мониторинг.
Установка
- Установка на примере CentOS Отрубаем selinux, если не знаем как его настроить:
echo 0 >/selinux/enforce
sed -i ‘s/SELINUX=enforcing/SELINUX=disable/’ /etc/selinux/config
Обновляем список пакетов и ставим необходимое:
yum update
yum install httpd php php-cli gcc glibc glibc-common gd gd-devel net-snmp unzip perl-Time-HiRes
Создаём пользователя, задаём ему пароль и добавляем в нужные группы:
1 2 3 4 5 |
|
Идём во временный каталог, скачиваем туда нужный пакет и разархивируем
1 2 3 |
|
Заходим в папку и собираем Nagios
1 2 3 4 5 6 7 |
|
Создаём конфиг для Apache
make install-webconf
Задаём пароль на вход:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Перезапускаем Apache
service httpd restart
Скачиваем плагины:
1 2 3 4 |
|
Устанавливаем их
1 2 3 |
|
Проверяем конфигурацию:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Если всё ок - перезапускаем
1 2 3 |
|
Проверяем:
Установка nrpe на другой машинке
Для начала ставим агент на машинке, КОТОРУЮ БУДЕМ мониторить.
yum –enablerepo=epel -y install nrpe nagios-plugins
Редактируем конфигурацию:
vi /etc/nagios/nrpe.cfg
1 2 |
|
Запускаем сервис
/etc/init.d/nrpe start
Starting nrpe: [ OK ]
В автозагрузку его:
chkconfig nrpe on
Теперь вернёмся на основную машинку и поставим нужный плагинчик
yum –enablerepo=epel -y install nagios-plugins-nrpe
Учитывая, что у нас место не совсем стандартное установки nagios, просто скопируем плагин
cp /usr/lib/nagios/plugins/check_nrpe /usr/local/nagios/libexec/
Теперь редактируем…
vi /usr/local/nagios/etc/objects/commands.cfg
1 2 3 4 5 |
|
Проверим заранее, всё ли ок. REMOTE_SERVER заменим на тот, который будем мониторить и после -с указываем то, что прописывали в 200 строке. Например:
/usr/local/nagios/libexec/check_nrpe -H REMOTE_SERVER -c check_hda1
Если по всем пунктам ок, добавляем в конец файла конфигурации удалённого сервера нужные строчки, не забывая менять remote_server на свой удалённый сервер:
nano nano /usr/local/nagios/etc/servers/remoteserver.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
Перегружаем nagios и смотрим что получилось
/etc/init.d/nagios restart
Примеры
Мониторим потребление памяти Redis
Создаём файл /opt/check_redis_mem.pl следующего содержания
1 2 3 4 5 6 7 8 9 10 |
|
Замените 510029952 своим максимальным значением.
Добавляем в nrpe.cfg
command[check_redis_mem]=/opt/check_redis_mem.pl
На сервере с nagios добавляем в конфиг хоста /usr/local/nagios/etc/servers/luna.cfg следующие строки
1 2 3 4 5 6 |
|
Рестартуем nagios и видим:
Redis Memory OK 11-24-2014 09:24:41 0d 0h 33m 19s 1/3 OK, 499501440
Проблемы и их решения
- Sorry, but Nagios is currently not checking for external commands
Вам запрещено выполнять внешние команды с помощью браузера. Зайдите в nagios.cfg и исправьте 0 на 1 в сл. строке:
check_external_commands=0
- Error: Could not stat() command file ‘/var/lib/nagios3/rw/nagios.cmd’!
У веб-сервера Apache нет прав на указанный файл или его просто не существует. Создайте его!
touch /var/lib/nagios3/rw/nagios.cmd
chmod a+rw /var/lib/nagios3/rw/nagios.cmd
Так же апач может не войти в /var/lib/nagios3/rw - исправьте это!
chmod a+rxw /var/lib/nagios3/rw