#1 2014.01.29 07:19:39
0
Nagios — это приложение, предназначенное для выполнения мониторинга систем и сетей. Оно следит за назначенными приложениями и службами и генерирует оповещения в зависимости от поведения наблюдаемых служб. До какого-то времени проект был известен как NetSaint. В настоящий момент, хотя сайт NetSaint работает, дальнейшая разработка проекта продолжается под именем Nagios.
Nagios это рекурсивный акроним, расшифровывающийся как Nagios Ain't Gonna Insist On Sainthood (Nagios не собирается настаивать на святости — намек на прежнее название проекта, NetSaint — сетевой святой).
Предварительная подготовка
Установите из портов перечисленные приложения:
Настройка SNMP
В системе, за которой вы собираетесь наблюдать с помощью Nagios, должен быть установлен и сконфигурирован SNMP. Настройка SNMP выполняется достаточно просто. Обязательно поменяйте названия сообществ (community), приведённые в конфигурационном файле. Названия сообществ это фактически пароли, и оставляя их неизменными вы ставите под удар безопасность системы.
Есть два способа настроить SNMP в Unix:
- Запустить snmpconf и ответить на все вопросы, которые будут задаваться;
- Создать свой собственный конфигурационный файл
Выберите любой удобный вам способ.
Создание файла конфигурации
Ниже пример конфигурационного файла snmpd.conf созданного с помощью программы snmpconf.
В этом конфигурационном файле присутствует самая базовая конфигурация:
- rwcommunity указывает, кто может выполнять запись в MIB хоста (вместо private укажите другое слово — это пароль);
- rocommunity указывает, кто может смотреть дерево SNMP.
По умолчанию название rocommunity public, но из соображений безопасности его лучше изменить на другое. Имя community это фактически пароль.
Если вы используете другую операционную систему, процедура будет незначительно отличаться. Другими будут пути к конфигурационным файлам.
Настройка Nagios
Сейчас, когда и Nagios и его дополнительные модули (plugins) уже проинсталлированы, почти можно начинать. Однако, Nagios даже не запустится, если его перед этим правильно не настроить.
Для начала можно ознакомиться с тем, примеры каких файлов есть в каталоге
Поскольку это файлы-примеры, разработчики Nagios добавили к каждому из них суффикс -sample. Прежде всего нужно переименовать или скопировать файлы, чтобы в названии не было этого суффикса. (Если эти файлы не переименовать, Nagios будет всё равно будет искать файлы .cfg и, естественно, ничего не найдёт).
Перед тем как переименовывать файлы, сделайте их резервную копию, чтобы в случае чего можно было всегда вернуться и посмотреть как сделано в примере.
Быстро переименовать множество файлов можно следующим образом:
В итоге в каталоге должны остаться такие файлы:
Прежде всего нужно посмотреть главный конфигурационный файл, nagios.cfg. В FreeBSD вы можете оставить все как есть, потому что при инсталляции в конфигурационном файле были установлены правильные пути. Единственное, что можно поменять это параметр check_external_commands, установленный по умолчанию в 0. Если вы хотите добавить новые возможности к Nagios, или напрямую вызывать команды Unix через web-интерфейс Nagios, установите этот параметр равным 1. Чтобы эта возможность заработала, нужно установить ещё несколько опций в файле cgi.cfg. Например, указать, каким пользователям разрешается выполнять внешние команды.
Для того чтобы заставить Nagios работать, нужно модифицировать несколько конфигурационных файлов. Вообще, настраивать Nagios намного проще чем может показаться.
Сначала лучше всего запускать Nagios в режиме отладки. Вызов в режим отладки выполняется так:
Команда загрузит все конфигурационные файлы и сообщит обо всех ошибках, которые она найдет. Исправляйте все ошибки по очереди, а потом запускайте команду снова. Перечисленные ниже файлы можно просто стереть и заменить их собственными версиями, которые представлены ниже.
Мы не будем выполнять продвинутую настройку, которая требует использования файлов dependecies.cfg и escalations.cfg. Удалите примеры файлов, чтобы они не смущали Nagios и создайте на их месте пустые файлы с такими же названиями.
Это можно сделать так:
или так
Настройка мониторинга
Файл hosts.cfg
Сначала нужно описать хосты, за которыми будет выполняться наблюдение. Можно описать сколь-угодно много хостов, но для простоты мы начнем с одного.
Первый описанный хост это не настоящий хост, а шаблон, на котором основываются описания всех остальных хостов. Такой же механизм можно встретить и в других конфигурационных файлах, когда конфигурация основывается на предварительно определенном множестве значений по умолчанию.
При такой конфигурации мы выполняем наблюдение только за хостом www.domain.com и выполняем только одну проверку — проверяем, живой ли хост. Параметр host_name является здесь принципиально важным, поскольку на другие конфигурационные файлы обращаются к описанию сервера по этому имени.
Файл hostgroups.cfg
Теперь нужно добавить хост в группу хостов (hostgroup). Даже в нашей простой конфигурации, когда хост один, все равно нужно добавлять его в группу, чтобы Nagios знал какую контактную группу (contact group) нужно использовать для отправки оповещений. О контактной группе подробнее ниже.
Мы определили группу хостов domain-servers и связали её с контактной группой domain-admins. Теперь переходим к описанию контактной группы.
Файл contactgroups.cfg
Мы определили контактную группу domain-admins и добавили пользователей bob и bill в эту группу. Такая конфигурация гарантирует, что оба пользователя получат предупреждение в том случае, если что-то не так с серверами за которые отвечает группа domain-admins. Правда, нужно иметь в виду, что индивидуальные настройки по каждому из пользователей могут перекрыть эти настройки.
Следующим шагом нужно указать контактную информацию и настройки оповещений.
Nagios это рекурсивный акроним, расшифровывающийся как Nagios Ain't Gonna Insist On Sainthood (Nagios не собирается настаивать на святости — намек на прежнее название проекта, NetSaint — сетевой святой).
Предварительная подготовка
Установите из портов перечисленные приложения:
MySQL 4x server : /usr/ports/databases/mysql40-server
MySQL 4x client : /usr/ports/databases/mysql40-client
Apache 1.3x : /usr/ports/www/apache13
Net-SNMP : /usr/ports/net-mgmt/net-snmp
Nagios : /usr/ports/net-mgmt/nagios (WITH_MYSQL="YES")
Настройка SNMP
В системе, за которой вы собираетесь наблюдать с помощью Nagios, должен быть установлен и сконфигурирован SNMP. Настройка SNMP выполняется достаточно просто. Обязательно поменяйте названия сообществ (community), приведённые в конфигурационном файле. Названия сообществ это фактически пароли, и оставляя их неизменными вы ставите под удар безопасность системы.
Есть два способа настроить SNMP в Unix:
- Запустить snmpconf и ответить на все вопросы, которые будут задаваться;
- Создать свой собственный конфигурационный файл
/usr/local/share/snmp/snmpd.conf
вручную.Выберите любой удобный вам способ.
Создание файла конфигурации
Ниже пример конфигурационного файла snmpd.conf созданного с помощью программы snmpconf.
syslocation: Meganetwork, Russia
sysservices 0
syscontact admin@yourlan.com
#community #hosts allowed
rwcommunity private trusted.host.com
rocommunity everyone 10.0.0.0/24
В этом конфигурационном файле присутствует самая базовая конфигурация:
- rwcommunity указывает, кто может выполнять запись в MIB хоста (вместо private укажите другое слово — это пароль);
- rocommunity указывает, кто может смотреть дерево SNMP.
По умолчанию название rocommunity public, но из соображений безопасности его лучше изменить на другое. Имя community это фактически пароль.
Если вы используете другую операционную систему, процедура будет незначительно отличаться. Другими будут пути к конфигурационным файлам.
Настройка Nagios
Сейчас, когда и Nagios и его дополнительные модули (plugins) уже проинсталлированы, почти можно начинать. Однако, Nagios даже не запустится, если его перед этим правильно не настроить.
Для начала можно ознакомиться с тем, примеры каких файлов есть в каталоге
/usr/local/etc/nagios:
# ls /usr/local/etc/nagios/*sample
cgi.cfg-sample
checkcommands.cfg-sample
contactgroups.cfg-sample
contacts.cfg-sample
dependencies.cfg-sample
escalations.cfg-sample
hostgroups.cfg-sample
hosts.cfg-sample
misccommands.cfg-sample
nagios.cfg-sample
resource.cfg-sample
services.cfg-sample
timeperiods.cfg-sample
Поскольку это файлы-примеры, разработчики Nagios добавили к каждому из них суффикс -sample. Прежде всего нужно переименовать или скопировать файлы, чтобы в названии не было этого суффикса. (Если эти файлы не переименовать, Nagios будет всё равно будет искать файлы .cfg и, естественно, ничего не найдёт).
Перед тем как переименовывать файлы, сделайте их резервную копию, чтобы в случае чего можно было всегда вернуться и посмотреть как сделано в примере.
# cd /usr/local/etc/nagios/etc
# mkdir sample
# cp *.cfg-sample sample/
Быстро переименовать множество файлов можно следующим образом:
# for i in *cfg-sample; do mv -v $i `basename $i "-sample"`; done
В итоге в каталоге должны остаться такие файлы:
cgi.cfg
checkcommands.cfg
contactgroups.cfg
contacts.cfg
dependencies.cfg
escalations.cfg
hostgroups.cfg
hosts.cfg
misccommands.cfg
nagios.cfg
resource.cfg
sample/
services.cfg
timeperiods.cfg
Прежде всего нужно посмотреть главный конфигурационный файл, nagios.cfg. В FreeBSD вы можете оставить все как есть, потому что при инсталляции в конфигурационном файле были установлены правильные пути. Единственное, что можно поменять это параметр check_external_commands, установленный по умолчанию в 0. Если вы хотите добавить новые возможности к Nagios, или напрямую вызывать команды Unix через web-интерфейс Nagios, установите этот параметр равным 1. Чтобы эта возможность заработала, нужно установить ещё несколько опций в файле cgi.cfg. Например, указать, каким пользователям разрешается выполнять внешние команды.
Для того чтобы заставить Nagios работать, нужно модифицировать несколько конфигурационных файлов. Вообще, настраивать Nagios намного проще чем может показаться.
Сначала лучше всего запускать Nagios в режиме отладки. Вызов в режим отладки выполняется так:
# nagios -v /usr/local/etc/nagios/nagios.cfg
Команда загрузит все конфигурационные файлы и сообщит обо всех ошибках, которые она найдет. Исправляйте все ошибки по очереди, а потом запускайте команду снова. Перечисленные ниже файлы можно просто стереть и заменить их собственными версиями, которые представлены ниже.
hosts.cfg
services.cfg
contacts.cfg
contactgroups.cfg
hostgroups.cfg
dependencies.cfg
escalations.cfg.
Мы не будем выполнять продвинутую настройку, которая требует использования файлов dependecies.cfg и escalations.cfg. Удалите примеры файлов, чтобы они не смущали Nagios и создайте на их месте пустые файлы с такими же названиями.
Это можно сделать так:
# cd /usr/local/etc/nagios
# rm dependencies.cfg
# rm escalations.cfg
# touch dependencies.cfg
# touch escalations.cfg
или так
# cd /usr/local/etc/nagios
# echo "" > dependencies.cfg
# echo "" > escalations.cfg
Настройка мониторинга
Файл hosts.cfg
Сначала нужно описать хосты, за которыми будет выполняться наблюдение. Можно описать сколь-угодно много хостов, но для простоты мы начнем с одного.
# Generic host definition template
define host{
# The name of this host template - referenced i
name generic-host
# Other host definitions, used for template recursion/resolution
# Host notifications are enabled
notifications_enabled 1
# Host event handler is enabled
event_handler_enabled 1
# Flap detection is enabled
flap_detection_enabled 1
# Process performance data
process_perf_data 1
# Retain status information across program restarts
retain_status_information 1
# Retain non-status informatddion across program restarts
retain_nonstatus_information 1
# DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST,
# JUST A TEMPLATE!
register 0
}
# Host Definition
define host{
# Name of host template to use
use generic-host
host_name domain.com
alias My Registered Domain
address www.domain.com
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
}
Первый описанный хост это не настоящий хост, а шаблон, на котором основываются описания всех остальных хостов. Такой же механизм можно встретить и в других конфигурационных файлах, когда конфигурация основывается на предварительно определенном множестве значений по умолчанию.
При такой конфигурации мы выполняем наблюдение только за хостом www.domain.com и выполняем только одну проверку — проверяем, живой ли хост. Параметр host_name является здесь принципиально важным, поскольку на другие конфигурационные файлы обращаются к описанию сервера по этому имени.
Файл hostgroups.cfg
Теперь нужно добавить хост в группу хостов (hostgroup). Даже в нашей простой конфигурации, когда хост один, все равно нужно добавлять его в группу, чтобы Nagios знал какую контактную группу (contact group) нужно использовать для отправки оповещений. О контактной группе подробнее ниже.
define hostgroup{
hostgroup_name domain-servers
alias Domain Servers
contact_groups domain-admins
members domain.com
}
Мы определили группу хостов domain-servers и связали её с контактной группой domain-admins. Теперь переходим к описанию контактной группы.
Файл contactgroups.cfg
define contactgroup{
contactgroup_name domain-admins
alias Domain.Com Admins
members bob, bill
}
Мы определили контактную группу domain-admins и добавили пользователей bob и bill в эту группу. Такая конфигурация гарантирует, что оба пользователя получат предупреждение в том случае, если что-то не так с серверами за которые отвечает группа domain-admins. Правда, нужно иметь в виду, что индивидуальные настройки по каждому из пользователей могут перекрыть эти настройки.
Следующим шагом нужно указать контактную информацию и настройки оповещений.