Nagios: популярная система мониторинга систем и сетей
Сергей «grinder» Яремчук (grinder@ua.fm, )
Современный бизнес тесно переплетен c IT-технологиями. От стабильности работы серверного и сетевого оборудования зависит эффективность компании любого размера и ее престиж. Постоянное наблюдение за всеми компонентами позволит выявить проблемные участки и устранить их до того, как произойдет сбой, или они смогут повлиять на работу сети, а оповещение поможет быстро устранить неисправность.
Содержание:
- О проекте
- Установка Nagios
- Конфигурационные файлы Nagios
- Мониторинг Windows систем
- Отправка оповещений
- Заключение
- Боковые выносы
Задача проекта Nagios – разработка свободной системы мониторинга компьютерных систем и сетей. Такая система следит за узлами или службами и в случае возникновения проблем (например, служба не отвечает) оповещает администратора. Nagios производит мониторинг работы большинства сетевых сервисов: SMTP, POP3, IMAP, SSH, Telnet, FTP, HTTP, DNS и многих других. Также с его помощью можно отслеживать использование ресурсов серверов: загруженность процессора, расходование оперативной памяти, дискового пространства и т.д. Причем не только в Unix, но и в других ОС. Например, мониторинг работы серверов под управлением Windows обеспечивается модулем NRPE_NT. Возможен удаленный мониторинг через шифрованные SSH или SSL туннели. Простая архитектура модулей расширений позволяет создавать свои способы проверки служб и обработчики событий (например, перезапуск зависшего сервиса). Концепция «родительских» узлов дает возможность определить иерархию и зависимости между хостами, таким образом, можно отличать действительно неработающие узлы от тех, которые недоступны системе мониторинга из-за неполадок на промежуточных пунктах. Администраторы любят Nagios за умение строить карты сетевой инфраструктуры и графики различных параметров наблюдаемых систем.
Проект возник в 2002 году, хотя первое время он был известен как NetSaint. Его лидером является программист Этан Галстад. Само слово Nagios, по информации на сайте , является рекурсивным акронимом, который расшифровывается как Nagios Ain’t Gonna Insist On Sainthood (Nagios не собирается настаивать на святости), что является намеком на предыдущее название проекта. Функциональность расширяется за счет плагинов и аддонов, большая часть из которых доступна на странице закачки.
В настоящее время предлагается две ветки продукта: 2.х и 3.х. В последней не только исправлены найденные ранее ошибки, добавлены новые макросы и многое другое, но, что не менее важно, пересмотрен алгоритм сканирования, с целью устранить один из главных недостатков этой системы – медлительность при проверке больших сетей. В 2.х все тесты проходят практически последовательно, в новой редакции задачи выполняются параллельно. Хотя вторая версия пока еще развивается, очевидно, что в будущем все силы будут брошены на третью ветку. Поэтому дальше речь пойдет именно о ней, хотя отличия в настройках не значительны.
Установку будем производить в Ubuntu, в других дистрибутивах процесс полностью аналогичен, за исключением начального этапа – установки зависимостей. Поиск в репозитарии командой:
$ sudo apt-cache search nagios
Выдаст ряд пакетов. Причем в этом списке присутствуют обе версии Nagios (пакеты 2-ой версии называются nagios2). Но в репозитарии не всегда самая свежая версия, поэтому будем ставить из исходников.
Если еще не устанавливался компилятор и прочие необходимые инструменты, ставим метапакет build-essential. Для просмотра статистики Nagios нам понадобится веб-сервер и графическая библиотека GD2 (нужна для динамической работы с изображениями):
$ sudo apt-get install apache2 libgd2-xpm-dev $ sudo apt-get install build-essential
Перед компиляцией Nagios следует создать специального пользователя и группу, от имени которых он будет работать. Если этого не сделать, Nagios собрать не удастся.
$ sudo useradd -m nagios $ sudo passwd nagios
В некоторых дистрибутивах при создании нового пользователя автоматически создается группа с таким же именем. Проверяем, так ли это:
$ grep nagios /etc/group nagios:x:1001:
Если вывод ничего не показал, добавляем вручную:
$ sudo usermod -G nagios nagios
Группа nagcmd необходима для управления настройками через веб-интерфейс, в нее должна быть включена учетная запись веб-сервера (в Ubuntu — www-data) и пользователь nagios:
$ sudo groupadd nagcmd $ sudo usermod -G nagcmd nagios $ grep -i user /etc/apache2/envvars export APACHE_RUN_USER=www-data $ sudo usermod -G nagcmd www-data
Теперь заходим на страницу и скачиваем последние версии Nagios и плагины (Plugins). Кроме стабильных версий, можно скачать последний CVS срез, но это, наверное, больше для экспериментаторов. Плагины также можно скачать со специального сайта . Здесь же доступна и ссылка на . Для установки они не нужны, но могут в последствии понадобиться при настройке мониторинга некоторых сервисов. Распаковываем полученные архивы и конфигурируем:
$ tar xzf nagios-3.0.3.tar.gz $ cd nagios-3.0.3 $ ./configure -–with-command-group=nagcmd
По окончании процедуры конфигурирования будет выведена таблица настроек, следует убедиться в том, что все нужное найдено, и параметры верны:
General Options:
————————-
…
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
…
Web Interface Options:
————————
HTML URL: http://localhost/nagios/
CGI URL: http://localhost/nagios/cgi-bin/
Теперь компилируем:
$ make all
По окончании сборки будет выдан список команд для установки различных компонентов Nagios. Ставим все:
$ sudo make install $ sudo make install-init $ sudo make install-config $ sudo make install-commandmode $ sudo make install-webconf
После выполнения третьей команды в каталог /usr/local/nagios/etc/ будут скопированы примеры конфигурационных файлов (cgi.cfg nagios.cfg resource.cfg). Команда «make install-webconf» создаст файл /etc/apache2/conf.d/nagios.conf, необходимый для работы с веб-сервером Apache.
Чтобы получить возможность регистрироваться через веб-интерфейс, при помощи htpasswd создадим учетную запись nagiosadmin:
$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Перезапускаем апач командой:
$ sudo /etc/init.d/apache2 reload
После установки в каталог /etc/init.d/ будет помещен скрипт для запуска Nagios, обеспечим его автоматическую загрузку при старте системы:
$ sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
Установка плагинов, в общем-то, стандартна:
$ tar xzf nagios-plugins-1.4.12.tar.gz $ cd nagios-plugins-1.4.12
Есть и другие опции конфигурирования, но нам подходят установки по умолчанию:
$ ./configure --with-nagios-user=nagios -—with-nagios-group=nagios $ make $ sudo make install
Теперь все готово к первому запуску Nagios, конфигурационные файлы уже настроены на мониторинг локальной системы. Проверяем конфиг:
$ sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
Things look okay – No serious problems were detected during the pre-flight check
Запускаем Nagios командой «sudo /etc/init.d/nagios start», некоторое время будет затрачено на сбор параметров локальной системы. Чтобы их просмотреть, при помощи веб-браузера заходим по адресу, подсказанному при установке – http://localhost/nagios/. Вводим логин nagiosadmin и пароль. Разобраться с веб-интерфейсом легко, не смотря на отсутствие локализации. Теперь заглянем в конфиги.
Как отмечалось выше, после установки Nagios появится несколько конфигурационных файлов. Основной конфиг, содержащий большое количество директив, которые демон считывает при запуске, называется nagios.cfg. Этот файл ссылается еще на два типа файлов. В файлах ресурсов содержатся пользовательские макросы, в том числе и пароли для доступа к объектам. Эту информацию специально разместили отдельно, чтобы не было возможности получить к ней доступ из CGI. В целях безопасности на такие файлы устанавливаются права 600 или 660. По умолчанию файл ресурсов один – resource.cfg. Использовав директиву resource_file в nagios.cfg, можно добавить любое их количество. Объекты, то есть все элементы, участвующие в мониторинге и оповещении (узлы, сервисы, контакты, команды и т.д.), описываются файлами определения объектов (Object Definition Files). За счет cfg_file можно прописать несколько таких файлов, но для удобства вместо отдельных файлов используют директиву cfg_dir, при помощи которой можно указать Nagios на каталог, где он будет искать файлы с описаниями объектов. После установки в /usr/local/nagios/etc/ будет создан подкаталог objects с примерами таких файлов. И, наконец, файл cgi.cfg содержит настройки CGI.
Параметров в nagios.cfg и cgi.cfg довольно много, но их назначение часто очевидно. Полное описание всех возможных параметров конфигурационных файлов можно найти в документации Nagios (). Что касается файла ресурсов, то он очень прост. Наибольший интерес представляют объектные файлы. Чтобы пример сделать интереснее, настроим мониторинг удаленного сервера, работающего под управлением Windows.
В подкаталоге objects есть готовые шаблоны объектных файлов для большинства случаев. В качестве шаблона настройки возьмем windows.cfg. Подключаем его, сняв комментарий в nagios.cfg:
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
Теперь открываем windows.cfg и правим:
$ sudo nano /usr/local/nagios/etc/objects/windows.cfg
# Описание узла (IP адрес, имя)
define host{
; Наследование значений по умолчанию из шаблона
use windows-server
host_name server01
alias Windows Server
address 192.168.1.20
}
# Описание контролируемых сервисов
define service{
use generic-service
host_name server01
service_description NSClient++ Version
# Команда для проверки
check_command check_nt!CLIENTVERSION
}
# Контроль загрузки процессора
define service{
use generic-service
host_name server01
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}
# Расход оперативной памяти нас также интересует
define service{
use generic-service
host_name server01
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90
}
# Чтобы добавить контроль конкретного сервиса (например Explorer), используем такую конструкцию:
define service{
use generic-service
host_name server01
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}
И так далее. Описание параметров можно найти в указанном файле и конфиге клиента (о нем чуть ниже). Теперь на сервер под управлением Windows необходимо установить программу-клиент NSClient++. На странице для закачки можно слить zip архив или установочный файл. Обрати внимание, что для 32 и 64 битных систем следует брать разные файлы. Установка msi файла стандартна, в случае zip архива его нужно распаковать, а затем, перейдя в этот каталог, ввести в окне терминала две команды:
> nsclient++ /install > nsclient++ SysTray
После этого в консоли Службы появится новый сервис. Вызываем окно свойств, переходим на вкладку «Вход в систему» и взводим флажок «Разрешить взаимодействие с рабочим столом». Запустить ее можно, введя в терминале:
> nsclient++ /start
Но перед запуском следует изменить параметры в конфигурационном файле NSC.ini, который находится в подкаталоге, где установлен NSClient++. Не смотря на то, что параметров внутри много, часто достаточно просто снять комментарии.
Файл NSC.ini
[modules]
# Снимаем ремарки с нужных модулей
# (есть и другие, но они пока находятся в стадии тестирования)
FileLogger.dll
CheckSystem.dll
CheckDisk.dll
NSClientListener.dll
NRPEListener.dll
SysTray.dll
CheckEventLog.dll
CheckHelpers.dll
CheckWMI.dll
[Settings]
# Пароль для доступа
password=secret-password
# Узел или узлы, которым разрешено подключение
allowed_hosts=192.168.1.100
[NSClient]
# Порт, на котором будет работать NSClientListener.dll
port=12489
Если был установлен пароль для доступа к NSClient++ клиенту, следует изменить команду для подключения. Команды описываются в файле commands.cfg, по умолчанию он уже подключен в nagios.cfg, но не поленись проверить, так ли это.
сfg_file=/usr/local/nagios/etc/objects/commands.cfg
Для считывания данных и передачи их серверу используется плагин check_nt, входящий в стандартную поставку Nagios. Открываем commands.cfg и приводим запись check_nt к следующему виду, указав после параметра ‘-s’ пароль для доступа.
$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489
-s secret_password -v $ARG1$ $ARG2$
}
Следует потратить некоторое время на изучение этого файла. Это снимет ряд вопросов о том, как работает Nagios. После всех изменений проверяем конфиги и перезапускаем Nagios:
$ sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg $ sudo /etc/init.d/nagios reload
Все, теперь программа некоторое время потратит на сбор информации, после чего данные будут доступны через веб-интерфейс.
Как говорилось, Nagios может не только собирать статистику, но и оповещать при возникновении проблем. Две команды notify-host-by-email и notify-service-by-email, описанные в commands.cfg, позволяют отсылать предупреждения на e-mail. Но чтобы они работали, в Ubuntu необходимо установить пакет mailx и изменить путь в описании с /bin/mail на /usr/bin/mail (или сделать соответствующий симлинк). Куда отправлять сообщение, описывается в файле contacts.cfg.
$ sudo nano /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name nagiosadmin
alias Nagios Admin
# Период оповещения
service_notification_period 24×7
host_notification_period 24×7
# Параметры состояния объектов u = unknown (неизвестное), w = warning (предупреждение), c = critical (критическое), r = recoveries (восстановлено), f = старт/стоп, n = none (отключение уведомлений)
service_notification_options w,u,c,r
host_notification_options d,u,r
# Тип оповещения из commands.cfg
service_notification_commands notify-by-email,notify-by-epager
host_notification_commands host-notify-by-email,host-notify-by-epager
# Адреса
email nagios@domain.com
pager nagios@domain.com
address1 11111111@icq.com
}
Используя контактные группы (contactgroups.cfg), можно определить пользователей, которым будут отправляться оповещения о работе конкретных типов серверов или сервисов. Не забудь проверить, чтобы этот файл был подключен в nagios.cfg.
Это далеко не все возможности Nagios, их насколько много, что на описание не хватит и книги. Наверное, Nagios не очень удобен для мониторинга единичного компьютера или сервиса, его потенциал полностью раскрывается в средних и больших сетях со сложной структурой. Это как раз тот случай, когда следует познакомиться с ним поближе.
INFO
-
Nagios — программа с открытым исходным кодом, предназначенная для мониторинга компьютерных систем и сетей. Она следит за указанными узлами и службами и оповещает администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу.
-
Под мониторингом сети понимают работу системы, которая выполняет постоянное наблюдение за компьютерной сетью в поисках медленных или неисправных систем и которая при обнаружении сбоев сообщает о них сетевому администратору с помощью почты, пейджера или других средств оповещения.
-
Первые версии NSClient++ были написаны еще для NetSaint.
WWW
-
В качестве стартового документа по установке Nagios и первичной настройке могу порекомендовать .
-
Полное описание все возможных параметров конфигурационных файлов ищи в .
-
Сайты и содержат большое количество ссылок на документацию, дополнительные инструменты и другие ресурсы по Nagios.
WARNING
-
В целях безопасности на файлы ресурсов и объектов следует установить права 600 или 660.
Статья опубликована в октябрьском номере журнала «Xakep» за 2008 год.





