Nagios
Содержание |
Введение
Nagios программа мониторинга компьютерных систем и сетей с открытым кодом. Предназначена для наблюдения, контроля состояния вычислительных узлов и служб, оповещает администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу[1]. В статье рассматривается установка Nagios на примере linux-дистрибутива OpenSUSE 11.4.
Установка
openSUSE 12.1
Внимание! Начиная с openSUSE 12.1 Nagios входит в репозиторий.
openSUSE 11.4 и старше
В системе подключены стандартные OSS и Non-OSS репозитории. Предполагается, что веб-сервер Apache уже установлен и функционирует. Пакет Nagios входит в состав дистрибутива и устанавливается следующим образом:
zypper in nagios nagios-plugins nagios-plugins-extras nagios-www
В отличие от других дистрибутивов, в поставку SuSE не входит набор иконок для отображения на карте. Необходимо скачать набор[2] самостоятельно и положить в соответствующую директорию:
wget http://bit.ly/jje1TO -o /usr/local/src/nagios-icon-pack.tar.gz tar xvfz /usr/local/src/nagios-icon-pack.tar.gz /usr/share/nagios/images/logos
Проверяем, что nagios будет автоматически запускаться при старте системы:
insserv nagios
Настройка
Конфигурационные файлы системы расположены в папке /etc/nagios
cgi.cfg
Важно обратить внимание, что в конфигурационном файле cgi.cfg после установки для доступа ко всем ресурсам используется http-пользователь nagiosadmin. Если этот пользователь вас не устраивает, следует заменить его имя в этом конфигурационном файле, а затем задать пароль для нового http-пользователя командой:
htpasswd2 -c /etc/nagios/htpasswd.users <username>
Например для допуска пользователя admin, описанного в /etc/nagios/objects/contacts.cfg надо запустить команду:
htpasswd2 /etc/nagios/htpasswd.users admin
nagios.cfg
Здесь подключаются конфигурационные файлы наблюдаемых устройств. Сделать это можно 2 способами. Указав каждое устройство отдельной строкой:
cfg_file=/etc/nagios/objects/commands.cfg
Указав папку с набором конфигурационных файлов:
cfg_dir=/etc/nagios/switches
На несуществующие файлы и папки Nagios будет выдавать ошибку.
Конфигурационный файл устройства
Оригинальная статья: http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html#host
define host{ use <type> host_name <host_name> alias <alias> address <ip_address> hostgroups <hostgroup_name> parents <parent_host_name> icon_image <image>.png icon_image_alt <alt> vrml_image <iamge>.png statusmap_image <image>.gd2 }
<type> может иметь следующие значения из файла /etc/nagios/objects/templates.cgg:
- generic-switch
- linux-server
- windows-server
При использовании шаблонов все параметры шаблона являются глобальными для всех устройств данного типа. Например в шаблоне указано значение по умолчанию обязательного параметра группы, получающей уведомленяия:
contact_groups admins
Можно указать время для отправки сообщений сервером:
notification_period <time_period>
<time_period> можно выбрать из файла /etc/nagios/objects/timeperiods.cfg
Заготовки в папке /etc/nagios/objects отличаются только набором стандартных служб, различных для перечисленных выше типов устройств. Требуемые службы добавляются в конфигурационный файл устройства после блока define host {}.
<image> можно выбрать из набора в папке /usr/share/nagios/images/logos
Один конфигурационный файл устройства должен иметь описание группы устройств, если требуется такое разделение. Объявляется группа следующим образом:
define hostgroup{ hostgroup_name <hostgroup_name> ; The name of the hostgroup alias <alias> ; Long name of the group }
Либо не следует использовать атрибут hostgroups <hostgroup_name> в описании устройства.
Конфигурация пользователей и групп
Официальная статья: http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html#contact
Пользователи и группы укаываются в файле /etc/nagios/objects/contacts.cfg.
Пользователь:
define contact{ contact_name a.einstein ; Имя пользователя use generic-contact ; Имя шаблон alias Albert Einstein ; Полное имя email a.einstein@example.com ; Адрес электронной почты service_notification_period workhours ; Сообщения об ошибках служб принимаются только в рабочее время host_notification_period workhours ; Сообщения об ошибках устройств принимаются только в рабочее время service_notification_options c ; Принимаются только критические сообщения от служб host_notification_options d,u ; Принимаются сообщения о том, что хост выключен или недоступен service_notification_commands notify-service-by-email ; Сообщения от служб отправляются по почте host_notification_commands notify-host-by-email ; Сообщения от устройств отправляются по почте }
Группа:
define contactgroup{ contactgroup_name admins alias Nagios Administrators members a.einstein }
Потеря пакетов до хоста
Т. к. состояние хоста определяется через ping, тем не менее следует использовать эту службу для учета потерь пакетов.
define service{ use generic-service ; Inherit values from a template host_name <host_name> service_description PING ; The service description check_command check_ping!200.0,20%!600.0,60% ; The command used to monitor the service normal_check_interval 5 ; Check the service every 5 minutes under normal conditions retry_check_interval 1 ; Re-check the service every minute until its final/hard state is determined }
Статус линка на порту
Удобно знать состояние свитча подразделения на момент звонка о проблемах с сетью. Если линк есть на порту, значит свитч можно исключить и искать проблему дальше.
Сложность заключается в поиске параметра ifOperStatus.<snmp_port_id>, т. к. <snmp_port_id> на многих свитчах не соответствует номеру порта <port_number>. Выяснить соответствие номера порта и идентификатора можно командой:
snmpwalk -c <community> -v 1 <ip_address>
По умолчанию в качестве <community> используется public.
В выводе надо искать строку соответствия номера порта и идентификатора:
... IF-MIB.ifDescr.<snmp_port_id> = STRING: <port_number> ...
Далее при добавлении службы к конфигурационному файлу свитча используется найденный идентификатор:
define service{ use generic-service ; Inherit values from a template host_name <host_name> service_description Port <port_number> link status check_command check_snmp!-C <community> -o ifOperStatus.<snmp_port_id> -r 1 -m RFC1213-MIB }
Температура внешнего датчика APC Smart-UPS
Стандартной службы для определения температуры внешенего датчика ИБП нет, по этому следует добавить службу пользователя. Они объявляются и определяются в файле /etc/nagios/objects/commands.cfg. Убедитесь, что он подключен в конфигурационном файле nagios.cfg:
cfg_file=/etc/nagios/objects/commands.cfg
В конец файла commands.cfg добавляем описание новой службы:
define command{ command_name snmp_ups_envtemp command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.10.2.3.2.1.4.1 -w 29 -c 40 -l 'environment Temperature' -u 'degree celsius' }
Затем в конфигурационный файл ИБП добавляется использование созданной службы.
define service{ use generic-service ; Inherit values from a template host_name <host_name> service_description APC X environment tempetarure check_command snmp_ups_envtemp!public }
Linux-server
Резервное копирование
Конфигурационные файлы:
/etc/nagios/
Иконки, которые вы используете:
/usr/share/nagios/images/logos/
Исходники, .rpm и все из чего собирали nagios:
/usr/local/src/
Примечания
- ↑ Nagios. Материал из Википедии — свободной энциклопедии
- ↑ F*Nagios icon pack (Status Map and Host View icons)
См. также
Cсылки
![]() |
[ + ] Сеть
|
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|