Статья напечатана в журнале
Современный бизнес прочно завязан на IT-технологиях. От стабильности работы серверного и сетевого оборудования зависит эффективность компании любого размера и ее престиж. Постоянное наблюдение за всеми компонентами позволит выявить проблемные участки и устранить их до того, как произойдет сбой, или они смогут повлиять на работу сети, а оповещение поможет быстро устранить неисправность.
О проекте
Задача проекта
Проект возник в 2002 году, хотя первое время он был известен как NetSaint. Его лидером является программист Этан Галстад. Само слово Nagios является рекурсивным акронимом, который расшифровывается как Nagios Ain’t Gonna Insist On Sainthood (Nagios не собирается настаивать на святости), что является намеком на предыдущее название проекта Saint. Функциональность расширяется за счет плагинов и аддонов, большая часть из которых доступна на странице закачки.
В настоящее время предлагается две ветки продукта: ранняя 2.х и новая 3.х. В последней не только исправлены найденные ранее ошибки, добавлены новые макросы и многое другое, но, что не менее важно, пересмотрен алгоритм сканирования, с целью устранить один из главных недостатков этой системы – медлительность при проверке больших сетей. В 2.х все тесты проходят практически последовательно, в новой редакции задачи выполняются параллельно. Хотя вторая версия пока еще развивается, очевидно, что в будущем все силы будут брошены на ветку 3. Поэтому дальше речь пойдет именно о ней, хотя отличия в настройках не значительны.
Установка Nagios
Установку будем производить в 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
Теперь заходим на страницу
$ 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 появится несколько конфигурационных файлов. Основной конфиг, содержащий большое количество директив, которые считывает при запуске демон, называется 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++ /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 не очень удобен для мониторинга единичного компьютера или сервиса, его потенциал полностью раскрывается в средних и больших сетях со сложной структурой. Это как раз тот случай, когда следует познакомиться с ним поближе.
Видео к статье
//
А я бы за такое подчиненному админу руки оторвал. )
Неужели тяжело в пакет собрать и устанавливать? Тем более что nagios предыдущей версии в ubuntu уже есть.
//
Статья писалась несколько месяцев назад.
В формат всего не втиснешь, приходится чем-то жертвовать.
//
про винду зачет!!! не знал =))
//
тут неплохо про мониторинг Оракла написано… мож пригодится кому
http://berghowto.info/viewtopic.php?f=67&t=82
//
Приветствую.
В линухе не селен, учусь. Была команда развернуть Nagios
Установил все по инструкции, все село нормально. Но когда ввожу localhost, не открывается указанная страница, дает скачать какой файлик, внутри хтмл код(ссылки).
Кто подскажет что я сделал неправильно????
//
Нужно обработку PHP в веб-сервере установить.
Поищи здесь на сайте недавно была статья.
//
Пасиб grinder.
Но уже разобрался. дабы долго не мучиться в поисках, снес все и поставил заново, сейчас все работает.
Думаю дело было в том что в первом случае после установки Ubuntu сходу накатил все пакеты обновления.
Во втором случае после установи сразу начал ставить Nagios хотя схема установки в 2-ом случае аналогично первой, но все заработало.
А твою подсказку на учту будущее.
//
Ребята подскажите в чем за байда?
В общем Ubuntu 9.04 (на виртуалке) (IP 192.168.88.28)
Nagios 3.1.2 настроил все по инструкции http://nagios.sourceforge.net/docs/3_0/quickstart-ubuntu.html
NSClient настроен по вашей инструкции
Тестовая машина (IP 192.160.88.20) отображается в web нормально? видны все процессы.
Боевой сервак (IP 192.168.14.5) статус “Warning”could not fetch information from server ”
порты открыты 12489, 5666, телнетом с сервера nagios по портам хожу, пароли убрал ваще.
Или то что разные зоны, в этом причина?
Что где недоглядел? Подскажите пожалуйста!!!
//
а что в NSC.ini?
//
Все спасибо, разобрался.
дело в стом что разные сети, боевые стоят в DMZ, там прикручен NAT вот нужно было прописывать его IP, вместо IP конкретного сервера (у них один Vlan)
//
Вот тут LAMP расписан http://www.tux.in.ua/articles/1169
//
Доброе время суток!! Я так-же не силён в линуксе,нопоявилась необходимость установить Nagios..и так-же как и у RUMа после ввода localhost/nagios он скачивает файл ***.phtml.part и всё.. ничем открыть не получается, он пишет что нет файла main.php и side.php..подскажите пожалуйста что делать…статью о которой говорил Грингер не нашёл…
//
2 Kaplia
ковыряй apache2
http://forum.sape.ru/showthread.php?t=6135 первая статья по запросу в гугл
у тя пхп апачем не обрабатывается
по теме!
блин, а что каждый вендор даёт датчикам температурным свой mib oid?
и стандартизация только у крупных вендоров типо hp dell cisco и то не на всё?
тем более в nsclient ++ есть параметр в настройках отвечающий за температуру как считать то это всё?
//
Срочно нужна помощь
Nagios пишет, что в критической зоне находится параметр Swap Usage 265d 0h 33m 0s SWAP CRITICAL — 100% free (0 MB out of 0 MB) — это я понимаю, как не хватает (заполнена) свободная память… Помогите как ее почистить … сможете мне подсказать
//
статьи нужно писать более конкретно и сжато, опуская лишние детали
//
To ar2ra:
В данном случае я с этим не согласен, так как являюсь начинающим пользователем Linux: если бы было написано более кратко и без деталей, то я бы не смог всего этого запустить.
А так в процессе установки nagios на Ubuntu возникла всего одна сложность с компиляцией nagios plugins, её решение описано по ссылке:
http://ubuntuforums.org/showthread.php?t=2028488
С учётом этого всё заработало. Перед этим я пытался всё сделать, используя другую статью — но потерпел фиаско (видимо, была более краткой — для тех, у кого есть время весь Линукс перелопатить и изучить сверху донизу). Так что моё мнение: ПРЕКРАСНАЯ СТАТЬЯ !
//
Согласен с kosogor. Однако можно было бы еще подробнее. Я, например, жутко не люблю конфиги, т.к. уходит очень много времени на их освоение, а у меня есть много других задач. Поэтому хотел бы еще описание как поставить нормальную GUI для работы с конфигами (Web, AppClient, etc.).
//
root@artem-VirtualBox:/home/artem/Загрузки/nagios# sudo make install-webconf
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf
/usr/bin/install: невозможно создать обычный файл «/etc/httpd/conf.d/nagios.conf»: Нет такого файла или каталога
make: *** [install-webconf] Ошибка 1
вот такая ошибка, не подскажете как исправить?