Nagios

Материал из RSU WiKi
Перейти к: навигация, поиск

Nagios — программа мониторинга компьютерных систем и сетей с открытым кодом. Предназначена для наблюдения, контроля состояния вычислительных узлов и служб, оповещает администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу[1]. В статье рассматривается установка Nagios на примере linux-дистрибутива OpenSUSE 12.1.

Содержание

Установка

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:

  1. generic-switch
  2. linux-server
  3. 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/

Примечания

  1. Nagios. Материал из Википедии — свободной энциклопедии
  2. F*Nagios icon pack (Status Map and Host View icons)

См. также

Cсылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты