- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF111:Nagios
Материал из Linuxformat.
- Nagios Linux Проверь себя на крутом проекте для продвинутых пользователей
Содержание |
Nagios: Cледим за своей сетью
- Большой Брат наблюдает за каждым нашим шагом; Джульетта Кемп покажет, как уделить такое же внимание локальной сети с помощью Nagios.
Nagios предоставляет небывалый контроль за всеми компьютерами сети, позволяющий исправить ошибки до того, как они станут критическими, и быть уверенными в том, что вы знаете о своей сети все. Базовая структура Nagios очень проста. Один из компьютеров становится сервером Nagios, собирает информацию с указанных клиентских компьютеров и аккуратно отображает ее на web-странице. Для получения базовых сведений о клиентских компьютерах (пингуются ли они, и работают ли SSH и HTTP) на них не нужно устанавливать никакого ПО: всю работу сделает сервер. Для получения централизованных отчетов с дополнительной информацией (например, доступным дисковым пространством или использованием процессора) на клиентские компьютеры потребуется установить ПО. При возникновении аварийных ситуаций сервер может реагировать на них путем отправки электронного письма, вывода сообщения на экран или выполнения других действий, заданных в файле скрипта.
Программа чрезвычайно гибкая, настраиваемая и мощная. Оборотной стороной тут неизбежно является сложность правильной настройки. На данном уроке мы рассмотрим конфигурацию центрального сервера и одного клиентского компьютера (все остальные настраиваются точно так же) и слегка коснемся других возможностей, которые можно исследовать после инсталляции. Это непросто, но стоит приложенных усилий, так как после установки Nagios поддержки почти не понадобится.
Часть 1 Начальная установка сервера
Для начала настроим сервер Nagios и просмотр отчетов через web. На сайте http://www.nagios.org можно найти исходники сервера или установочные пакеты для вашего дистрибутива. Для Debian это пакет nagios2 (не nagios, тот уже устарел); также нужно установить пакет nagiosplugins (о модулях расширения мы поговорим позже). Во время установки у вас запросят пароль администратора – не забудьте его! – а также уточнят, нужна ли обратная совместимость с первой версий (для новой установки – не нужна).
Если у вас еще нет apache2, им тоже нужно обзавестись (этого я здесь описывать не буду). Установив Nagios и Apache, зайдите в каталог /etc/nagios2 и скопируйте секции из файла apache2.conf в конфигурационный файл вашего сервера Apache. apache2.conf содержит базовые настройки, которые должны обеспечить генерацию web-отчетов в стандартной установке Apache. Если до того вы настраивали Apache или Nagios или перемещали какие-то файлы, убедитесь, что всякие директивы и псевдонимы указывают на нужные места. Перезапустите Apache, и с web покончено. Естественно, теперь надо настроить сервер, чтобы он выводил полученную информацию в web-страницы.
Примечание: далее предполагается, что все файлы и каталоги находятся в каталоге /etc/nagios2, если не оговорено иное.
В случае с Debian – а я советую применять этот подход и тогда, когда вы устанавливаете сервер на другой системе или из исходных текстов – надо создать каталог conf.d и разместить в нем большинство файлов конфигурации. Внутри него, настройки можно раскидать по любому числу отдельных файлов. По-моему, такими файлами управлять проще, чем одним большим, хотя при желании можно избрать и такой путь!
Путь к этому каталогу указывается в основном файле конфигурации nagios.cfg следующим образом:
cfg_dir=/etc/nagios2/conf.d
Точно так же можно добавить и другие каталоги – столько, сколько понадобится.
Для базовой установки, когда осуществляется мониторинг только самого сервера (localhost), должны подойти большинство настроек по умолчанию. Нужно только отредактировать файл conf.d/contacts_nagios2.cfg, записав свой адрес электронной почты в первый контакт. При возникновении аварийной ситуации Nagios отправит вам письмо. Перед запуском Nagios взгляните на настройки по умолчанию для localhost, заданные в файле conf.d/localhost_nagios2.cfg. Настройки сервера и первого сервиса должны выглядеть примерно так:
Чтобы стартовой точкой web-интерфейса Nagios был тактический обзор, а не домашняя страница, отредактируйте файл /usr/share/nagios2/htdocs/index.html, заменив строку
FRAME SRC=”main.html” NAME=”main”>
на
<FRAME SRC=”/cgi-bin/nagios2/tac.cgi” NAME=”main”>
define host{ use generic-host host_name localhost alias localhost address 127.0.0.1 } # Сервис, следящий за свободным местом на корневом разделе # Предупреждение при <20%, критическая ошибка – при <10% define service{ # Используемый шаблон use generic-service host_name localhost service_description Disk Space check_command check_all_disks!20%!10% }
Затем определяются остальные сервисы.
Шаблоны
Ключевое слово use в этом фрагменте кода подчеркивает очень удобную функцию Nagios – шаблоны. Это означает, что настройки сервиса или основного компьютера можно сохранить и не вводить их каждый раз заново. Повторное использование конфигурации, как и любого другого кода, всегда лучший выбор – меньше мороки, проще поддержка!
Шаблон generic-host находится в файле conf.d/generic-host_nagios2.cfg. Он содержит набор установок, в том числе активацию оповещений, различные аспекты обработки оповещений и событий и пр. Однако в настройках индивидуального компьютера любую из них можно изменить. Таким же образом шаблон generic-service задает настройки сервисов (взглянуть на них можно в файле conf.d/generic-service_nagios2.cfg). Ключевое слово check_command ссылается на команду, находящуюся в файле /etc/nagios-plugins/config/disk.cfg. Данный каталог содержит команды для проверки различных сервисов, и кроме модулей, установленных из пакета по умолчанию (в случае инсталляции из исходников большинство из них придется добавить вручную), можно заполучить огромное количество других.
Пока оставьте основные настройки без изменений. Чуть позже мы добавим другой компьютер в несколько групп. Перезапустите Nagios и откройте страницу http://server.example.com/nagios2 в браузере (потребуется ввести пароль пользователя nagiosadmin, который вы задали при установке). Появится стартовая страница; кликните по ссылке Tactical Overview в меню слева, и появится отчет как на экранном снимке.
В тактическом обзоре содержится информация о компьютерах, сервисах и их состоянии. С точки зрения Nagios, компьютеры и сервисы могут быть в одном из нескольких состояний. Pending означает, что проверка состояния еще не сделана; OK – вы удивитесь! – что все хорошо. Для «нехороших» состояний есть несколько уровней: желтый цвет – Предупреждение (Warning), а красный – Критическая ошибка (Critical). Уровни можно установить самостоятельно в файлах конфигурации. При щелчке на сервисе появится окно с подробной информацией о нем (или компьютере).
Часть 2 Компьютеры и сервисы
Пока сервер Nagios осуществляет мониторинг самого себя и шлюза по умолчанию. Теперь нужно добавить клиентский компьютер. Лучший способ сделать это – создать файл conf.d/host-client1.cfg, названный по имени компьютера клиента, который сначала должен выглядеть примерно так:
define host{ use generic-host host_name client1 address 10.0.0.2 }
Как видите, это самые базовые настройки – почти вся информация берется из шаблона для клиентского компьютера. Перезагрузите Nagios (/etc/init.d/nagios2 reload), дайте ему минуту-другую на различные проверки и просмотрите отчет.
Группы компьютеров и сервисы
Ситуация, когда состояние сервиса или компьютера изменяется слишком часто, приводя к появлению множества сообщений об ошибках, называется «переброски». Это может означать неправильную настройку или реальные проблемы с сетью.
Теперь Nagios может осуществлять мониторинг клиентского компьютера, но пока что для него не определено никаких проверок. Их можно добавить в файл конфигурации этого компьютера точно так же, как и в
файл для localhost, рассмотренный ранее. Однако делать это для каждого компьютера довольно утомительно – как и с шаблонами, неплохо бы набрать настройки только однажды. Для этого потребуется определить группу компьютеров и затем определить сервис для нее, а не для каждого отдельного хоста.
Отредактируйте файл conf.d/hostgroups_nagios2.cfg, добавив имя компьютера в соответствующие группы. При желании можно создать новую группу. Например, у меня есть такая группа:
define hostgroup { hostgroup_name debian-servers alias Debian GNU/Linux Servers members localhost,webserver,ldapserver }
Для группы можно задать множество других настроек – здесь поможет отличная страница документации Nagios. Однако и эти минимальные настройки отлично сработают.
Итак, клиентский компьютер добавлен в группу; назовем ее debian-servers. Отредактируем файл conf.d/services_nagios2.cfg, чтобы задать проверки сервисов для этой группы. Проверим «пингуемость» компьютера и состояние SSH:
define service { hostgroup_name debian-servers service_description SSH check_command check_ssh use generic-service notification_interval 0 } define service { hostgroup_name debian-servers service_description PING check_command check_ping!100.0,20%!500.0,60% use generic-service notification_interval 0 }
Возможно, вы захотите определить группу компьютеров, к которым должен быть доступ по SSH, и другую группу компьютеров, которые должны «пинговаться». Например, шлюз по умолчанию пингуется, но не обязательно доступен по SSH. Но сейчас мы определим только одну группу, так как у нас есть всего один клиентский компьютер. Nagios проверит компьютеры в этих группах на предмет состояния сервисов, определенных выражением check_command с настройками generic-service, и сообщит о найденных ошибках.
Проверка нескольких сайтов
Если вы хотите проверить, что web-сервер отвечает на HTTP-запросы, отлично подойдет существующая команда check_http. Однако на одном сервере может быть несколько доменов, и проверять их нужно по отдельности. Для этого сначала добавьте в файл commands.cfg следующие строки:
define command{ command_name check_http-website1 command_line /usr/lib/nagios/plugins/check_http -H website1. example.com }
Создайте такие же команды для всех сайтов. Затем отредактируйте файл настройки web-сервера (например, conf.d/host-webserver.cfg), включив сервис для каждой команды:
define service{ host_name webserver service_description website1 check_command check_http-website1 use generic-service notification_interval 1440
Часть 3 Аварийные ситуации
Ну вот, Nagios настроен так, что можно отслеживать состояние компьютеров с одной web-страницы. Теперь добавим отправку электронного письма при каждом возникновении аварийной ситуации, чтобы не открывать браузер попусту. Мы уже редактировали файл contacts_nagios2.cfg – в нем также определена группа контактов admin. Опять же, лучше создать группы контактов, чем работать с отдельными пользователями: это упрощает обслуживание системы. Если потребуется изменить настройки пользователей, достаточно будет подправить их членство в группах, а не искать вхождения во всех файлах. По умолчанию группа контактов admins содержит только пользователя root, настройки для которого мы уже задали, так что с ним и продолжим.
Общие настройки для сервиса снова нам помогут. Моя настройка по умолчанию для всего – при любой проблеме отправлять электронное письмо, потому что я проверяю почту довольно часто и скорее найду это сообщение там, чем вспомню, что нужно просмотреть web-страницу. Так мы и сделаем. Добавьте следующее определение сервиса в файл conf.d/generic-service_nagios2.cfg:
notification_interval 1440 is_volatile 0 check_period 24x7 normal_check_interval 5 retry_check_interval 1 max_check_attempts 10 notification_period 24x7 notification_options c,r contact_groups admins }
Интервал оповещения определяет, как часто вам будет приходить напоминание (в минутах) – здесь это 24 часа. Временные интервалы определяются в файле conf.d/timeperiods_nagios2.cfg. Параметр check_period определяет, когда сервис должен выполняться – в данном случае, все время. Параметры normal_check_interval и retry_check_interval определяются в минутах: в данном случае, сервис проверяется каждые пять минут, но если ответ не получен и выполняется повторная проверка, она будет происходить раз в минуту. После десяти повторных попыток Nagios делает вывод, что с сервисом что-то не так, хотя можно, если надо, уменьшить этот параметр.
Параметр notification_period определяет, когда должны рассылаться оповещения – опять же, в нашем случае, всегда – а параметр notification_options определяет, при каких условиях генерируется оповещение. Для хостов, d означает оповещение в том случае, если система отключилась, u – если она недоступна, r – сообщать о восстановлении системы, а f – когда на компьютере начинаются и прекращаются переброски. Для сервисов w означает оповещение о состояниях «предупреждение», u – о неизвестных состояниях, c – о критических состояниях, и, опять же, r – восстановление, а f – начало/окончание перебросок. Наконец, параметр contact_groups определяет, с кем нужно связаться на случай ошибки.
Настроив все это, перезагрузите Nagios, затем попробуйте отключить SSH на компьютере клиента. Вы должны получить сообщение, что SSH на клиенте недоступен, на адрес, указанный в файле контактов. Включите SSH – и должно придти другое сообщение, о том, что SSH снова в порядке.
Настройка поля From
По умолчанию в поле From: отправляемого оповещения помещается пользователь Nagios. Это может быть не очень хорошо, если почтовому серверу нужен зарегистрированный адрес отправителя. Если вы пользуетесь Exim 4, установите опцию ‘untrusted user’ и добавьте
-- -f address@example.com
в конец команд host-notify-by-email и notify-by-email в файле commands.cfg.
Часть 4 Модули расширения
Теперь базовый вариант Nagios готов, и можно легко добавить еще компьютеры и сервисы, тем же простым способом. Но возможности Nagios гораздо богаче.
В качестве примера рассмотрим модуль расширения, позволяющий отслеживать дисковое пространство, использование процессора и другие подобные параметры удаленных компьютеров. Пока вы можете только видеть, включен компьютер или нет. По идее, нужно бы знать больше – вдруг переполнится диск или откажет почтовая служба.
Для этого нам понадобится модуль NRPE. Установите его (в Debian он находится в пакете nagios-nrpe-plugin) на сервер Nagios и добавьте сервер NRPE на удаленный компьютер (пакет nagios-nrpe-server в Debian). Сервер NRPE будет собирать информацию с компьютера и передавать ее модулю, когда с ним свяжется основной сервер.
Проверим, что это работает…
Для проверки соединения между сервером и клиентом, выполните команду /usr/lib/nagios/plugins/check_nrpe -H client -c check_users на сервере: она должна сообщить вам, сколько пользователей зашли в систему на клиентском компьютере. Затем проверьте содержимое файла /etc/nagios-plugins/config/check_nrpe.cfg на сервере, если это необходимо – в Debian нужные настройки уже заданы, и редактировать его не нужно. Он должен выглядеть примерно так:
define command { command_name check_nrpe command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ } # эта команда запускает программу $ARG1$ с единственным аргументом define command { command_name check_nrpe_1arg command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
Отредактируйте файл conf.d/services_nagios2.cfg на удаленном компьютере, добавив сервисы, которые нужно отслеживать. Мои настройки выглядят так:
Модули расширения позволяют легко обогатить функциональность Nagios – найти их можно в репозитории по адресу http://nagiosplugins.org.
define service { service_description SMTP use generic-service hostgroup_name nrpe check_command check_nrpe_1arg!check_smtp } define service { service_description LOAD use generic-service hostgroup_name nrpe check_command check_nrpe_1arg!check_load } define service { service_description DISK use generic-service hostgroup_name nrpe check_command check_nrpe!check_disk!/ }
(Учтите, что должна быть настроена группа компьютеров nrpe.)
Сервисы, требующие только один аргумент – имя отслеживаемой службы – используют команду check_nrpe_1arg' (см. /etc/nagiosplugins/config/check_nrpe.cfg). Если нужно передать дополнительные аргументы, потребуется отредактировать файл /etc/nagios/nrpe.cfg на компьютере клиента, задав параметру dont_blame_nrpe значение 1. Затем воспользуйтесь командой check_nrpe. В приведенном фрагменте кода я использовала аргумент, чтобы сообщить точку монтирования проверяемого диска. Перезапустите Nagios, и должны появиться данные с клиентского компьютера.
Доступные команды находятся в каталоге /usr/lib/nagios/plugins на клиентском компьютер, а в файле /etc/nagios/nrpe-local.cfg можно создать собственные. Я создала несколько аргументов, которые выглядят так:
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 10% -c 5% -p $ARG1$ command[check_smtp]=/usr/lib/nagios/plugins/check_smtp -w 1 -c 2
Это означает, что я могу проверить все локальные диски, какие хочу, не ограничиваясь корневым каталогом /, как в случае с командой check_disk по умолчанию, и могу убедиться, что на всех компьютерах благополучно работает SMTP. Точно так же можно создать другие команды. (Кстати, обратите внимание, что команда check_disk выдает количество свободного – а не используемого – пространства на диске).
Итак, наша первая настройка Nagios закончена – сервер проверяет себя и удаленный компьютер и сообщает обо всех проблемах. Добавить дополнительные компьютеры и сервисы несложно; если хотите сделать нечто большее, воспользуйтесь каталогом модулей расширения. Команда /usr/lib/nagios/plugins/plugin_name -h выведет справку по указанному модулю. А пока – усядьтесь в кресле поудобнее и наслаждайтесь созерцанием того, как сеть наблюдает сама за собой! LXF