вторник, 20 ноября 2012 г.

Nagios: популярная система мониторинга


Задача проекта Nagios – разработать свободную систему мониторинга компьютерных систем и сетей. Система следит за узлами или службами и в случае возникновения проблем (например, служба не отвечает) оповещает администратора. Постоянное наблюдение за всеми компонентами позволит выявить проблемные участки и устранить их прежде, чем произойдет сбой, или они смогут повлиять на работу сети.

Nagios

Nagios производит мониторинг работы большинства сетевых сервисов: SMTP, POP3, IMAP, SSH, Telnet, FTP, HTTP, DNS и многих других. Также с его помощью можно отслеживать использование ресурсов серверов: загруженность процессора, расходование оперативной памяти, дискового пространства и т.д. – причем, не только в Unix, но и в других ОС. Например, мониторинг работы серверов под управлением Windows обеспечивается модулем NRPE_NT.
Возможен удаленный мониторинг через шифрованные SSH- или SSL-туннели. Простая архитектура модулей расширений позволяет создавать свои способы проверки служб и обработчики событий (к примеру, перезапуск зависшего сервиса). Концепция «родительских» узлов дает возможность определить иерархию и зависимости между хостами. Таким образом можно отличать действительно неработающие узлы от тех, которые недоступны системе мониторинга из-за неполадок на промежуточных пунктах. Nagios ценят за умение строить карты сетевой инфраструктуры и графики различных параметров наблюдаемых систем.
Проект возник в 2002 году, хотя первое время он был известен как NetSaint. Его лидером является программист Этан Галстад. Само слово Nagios, по информации на сайте www.nagios.org, – это рекурсивный акроним, который расшифровывается, как Nagios Ain't Gonna Insist On Sainthood («Nagios не собирается настаивать на святости») – намек на предыдущее название проекта. Функциональность расширяется за счет плагинов и аддонов, большая часть из которых доступна на странице закачки.
Сейчас предлагается две ветки продукта: 2.х и 3.х. В последней не только исправлены найденные ранее ошибки, добавлены новые макросы и многое другое, но, что важно, пересмотрен алгоритм сканирования, с целью устранить один из главных недостатков этой системы – медлительность при проверке больших сетей. В 2.х все тесты проходят практически последовательно, а в новой редакции задачи выполняются параллельно. Хотя вторая версия еще развивается, очевидно, что в будущем все силы будут брошены на третью ветку. Поэтому, хотя отличия в настройках незначительны, дальше речь пойдет именно о ней.

Установка Nagios

Установку будем производить в Ubuntu. В других дистрибутивах процесс полностью аналогичен, за исключением начального этапа – установки зависимостей. Поиск в репозитарии командой:
Заходим в консоль с правами root и выполняем:
apt-get -y install apache2 php5 nagios3

Конфигурационные файлы Nagios

Как отмечалось выше, после установки 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 (nagios.sf.net/docs/3_0). Файл ресурсов очень прост. Наибольший интерес представляют объектные файлы. Чтобы пример сделать интереснее, настроим мониторинг удаленного сервера, работающего под управлением Windows.

Мониторинг 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++. На странице для закачки sf.net/projects/nscplus можно слить 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 24x7
host_notification_period 24x7
# Параметры состояния объектов 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 и первичной настройке могу порекомендовать Quickstart Installation Guides (nagios.sf.net/docs/3_0/quickstart.html).
Полное описание все возможных параметров конфигурационных файлов ищи в документации Nagios(nagios.sf.net/docs/3_0).
Сайты www.nagioscommunity.org и www.nagiosforge.org содержат большое количество ссылок на документацию, дополнительные инструменты и другие ресурсы по Nagios.

WARNING

В целях безопасности на файлы ресурсов и объектов лучше установить права 600 или 660.

Комментариев нет:

Отправить комментарий