1 Введение

1.1 Цели

1.2 Замечания

2 Упражнения

3 ЧАСТЬ IV - добавление "родительских" отношений

Каждое устройство является дочерним для маршрутизатора или роутера в классе, КРОМЕ вашего шлюза (rtrX) и других членов вашей группы. Мы собираемся добавить строку "parents" для каждого сконфигурированного устройства.

Если вы не уверены, какое устройство является "родителем" другого устройства, проверьте диаграмму сети на wiki. Помните, "родительские" отношения должны указывать с точки зрения инсталляции Nagios, запущенной на вашей виртуальной машине.

3.1 1. Добавление "parents" в switches.cfg

$ cd /etc/nagios3/conf.d
$ sudo editor switches.cfg

Измените запись:

define host {
    use         generic-host
    host_name   sw
    alias       Backbone Switch
    address     10.10.0.253
}

на

define host {
    use         generic-host
    host_name   sw
    alias       Backbone Switch
    address     10.10.0.253
    parents rtrX
}

Где "rtrX" - шлюз вашей группы. То есть, для группы 1 вы бы использовали "rtr1", для группы 2 - "rtr2", и так далее.

Сохраните файл и выйдите из редактора.

3.2 2. Добавление "parents" в routers.cfg

$ sudo editor routers.cfg

Добавьте строчку "parents" для каждой записи. Так, для шлюза (gw) в начале файла новое определению будет выглядеть так:

define host {
    use         generic-host
    host_name   gw
    alias       Classroom Gateway Router
    address     10.10.0.254
    parents     sw
}

Для всех остальных записей rtrX, КРОМЕ rtrX вашей собственной группы, добавьте строку:

    parents sw

rtrX вашей собственной группы НЕ ДОЛЖЕН иметь никаких "родителей", потому что он напрямую подключен к вашей инсталляции Nagios, который является "родителем" по умолчанию.

Если у вас есть записи точек доступа ("ap1", "ap2"), их "родителем" будет маршрутизатор, так же как и для других роутеров.

Например, если вы в группе в, то записи для роутеров групп 1, 2, 3 будут выглядеть:

define host {
    use         generic-host
    host_name   rtr1
    alias       Group 1 Router
    address     10.10.1.254
    parents     sw
}

define host {
    use         generic-host
    host_name   rtr2
    alias       Group 2 Router
    address     10.10.2.254
}

define host {
    use         generic-host
    host_name   rtr3
    alias       Group 3 Router
    address     10.10.3.254
    parents     sw
}

Измените оставшиеся записи в файле правильным образом. Сохраните файл и выйдите из редактора.

3.3 3. Добавление "parents" в pcs.cfg

Для всех виртуальных машин вам следует добавить строку "parents", указывающую на роутер группы, к которой принадлежит данная машина (КРОМЕ машин в вашей собственной группе). Для машины noc "родителем" будет маршрутизатор sw

#
# Classroom NOC
#

define host {
    use         generic-host
    host_name   noc
    alias       Workshop NOC machine
    address     10.10.0.250
    parents     sw
}


Для машин в группе 1 записи выглядят как:


#
# Group 1
# 

define host {
    use         generic-host
    host_name   pc1
    alias       pc1
    address     10.10.1.1
    parents     rtr1
}

define host {
    use         generic-host
    host_name   pc2
    alias       pc2
    address     10.10.1.2
    parents     rtr1
}

и так далее.

Сделайте это для всех машин в оставшихся группах. Например, pc5 в группе 2 "родителем" будет:

     parents    rtr2

ОДНАКО, ДЛЯ 4 ЗАПИСЕЙ ДЛЯ МАШИН В ВАШЕЙ ГРУППЕ НЕ ДОБАВЛЯЙТЕ НИКАКИХ СТРОК PARENT! ПОВТОРЯЕМ - МАШИНЫ В ВАШЕЙ ГРУППЕ НЕ ДОЛЖНЫ ИМЕТЬ СТРОКИ PARENT!

Сохраните файл и выйдите из редактора.

3.4 4. Перезапустите Nagios и посмотрите обновленную диаграмму сетевого статуса

$ sudo service nagios3 restart

Если требуется, исправьте ошибки и перезапустите Nagios снова.

Посетите http://pcN.ws.nsrc.org/nagios3 и нажмите на ссылку "Map" слева. Диаграмма теперь выглядет совсем по-другому. Вы должны увидеть диаграмму, которая показывает сеть с точки зрения Nagios на вашей машине.

4 ЧАСТЬ V - Создание других групп хостов

4.1 0. Подготовка

В web-интерфейсе, посмотрите на страницы "Hostgroup Overview", "Hostgroup Summary", "Hostgroup Grid". Это дает удобный метод группирования машин, имеющих отношение друг к другу (например, находятся в одном месте, выполняют одну функцию и т.д.).

4.2 1. Измените /etc/nagios3/conf.d/hostgroups_nagios2.cfg

Для последующего будет очень полезно создать или обновить следующие группы хостов:

      debian-servers
      routers
      switches

Если вы отредактируете файл /etc/nagios3/conf.d/hostgroups_nagios2.cfg, вы увидите запись для debian-servers, которая содержит только localhost. Поменяйте эту запись, чтобы она включала все классные сервера, включая noc (предположительно, запись для "noc" наличествует в файле pcs.cfg). Не забудьте пропустить вашу собственную виртуальную машину, поскольку она уже представлена именем localhost).

$ sudo editor /etc/nagios3/conf.d/hostgroups_nagios2.cfg

Модифицируйте запись, говорящую:

# A list of your Debian GNU/Linux servers
define hostgroup {
        hostgroup_name  debian-servers
                alias           Debian GNU/Linux Servers
                members         localhost
        }

так, что параметр members содержит что-то в этом роде. Воспользуйтесь диаграммой сети на wiki, чтобы не ошибиться с точным количеством машин и их имен на этом семинаре.

  members    localhost,pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9,pc10,pc11,pc12, \
             pc13,pc14,pc15,pc16,pc17,pc18,pc19,pc20,pc21,pc22,pc23,pc24,pc25,\
             pc26,pc27,pc28,pc29,pc30,pc31,pc32,pc33,pc34,pc35,pc36

Убедитесь, что в конце строк, имеющих продолжение, присутствует "". В противном случае Nagios выдаст ошибку при перезапуске. Не забудьте, что ваша собственная виртуальная машина - это просто localhost.

Когда это сделано, добавьте еще одну группу хостов для классного маршрутизатора. Если наличествует более одного маршрутизатора, добавьте и их тоже. При единственном маршрутизаторе, запись в конце hostgroups_nagios2.cfg должна выглядеть так:

# A list of our switches
define hostgroup {
        hostgroup_name  switches
                alias           Classroom Switches
                members         sw
        }

Когда вы закончите с этим, не забудьте проверить конфигурацию на ошибки и перезапустить Nagios.

4.3 2. Опять зайдите на web-интерфейс и найдите новые группы хостов

5 ЧАСТЬ VI - Дополнительная информация о хостах ("как сделать графики красивыми")

5.1 1. Отредактируйте extinfo_nagios2.cfg

Если вы хотите использовать подходящие иконки для хостов в Nagios, это делается следующим образом. У нас есть три типа устройств:

Довольно много иконок лежит в каталоге /usr/share/nagios/htdocs/images/logos/. Они были установлены пакетом, зависящим от пакета nagios3 в Ubuntu. В некоторых случаях можно найти иконки для конкретных моделей оборудования, но для простоты мы будем использовать следующие иконки:

/usr/share/nagios/htodcs/images/logos/base/debian.*
/usr/share/nagios/htdocs/images/logos/cook/router.*
/usr/share/nagios/htdocs/images/logos/cook/switch.*

Следующий шаг - отредактировать файл /etc/nagios3/conf.d/extinfo_nagios2.cfg и дать знать Nagiosу, какие изображения вы хотите использовать для представления ваших устройств.

$ sudo editor /etc/nagios3/conf.d/extinfo_nagios2.cfg

Запись для роутеров будет выглядеть так (запись для debian-servers уже существует). Модель роутера (3600) не особенно важна. Используемое изображение представляет роутер "вообще".

define hostextinfo {
        hostgroup_name   routers 
        icon_image       cook/router.png
        icon_image_alt   Cisco Routers (7200)
        vrml_image       router.png 
        statusmap_image  cook/router.gd2
}

Обратите внимание на то, как мы просто использовали "hostgroup_name routers", потому что эта группа хостов уже определена в файле hostgroups_nagios2.cfg. Подобный подход делает конфигурирование многочисленных похожих устройств намного проще.

Теперь добавьте запись для ваших маршрутизаторов. Когда это сделано, проверьте конфигурацию на ошибки и перезапустите Nagios. Посмотрите на диаграмму сетевого статуса в web-интерфейсе (ссылка Map слева). Она должна выглядеть намного приятней, с настоящими изображениями вместо знаков вопроса для большинства устройств.

6 ЧАСТЬ VII - создание групп сервисов

6.1 1. Создайте группы сервисов для ssh и http для каждого набора виртуальных серверов

Идея заключается в создании трех групп сервисов, одна группа для каждой трети класса. Мы хотим сгруппировать эти машины вместе и включить состояние их сервисов ssh и http. Для этого отредактируйте (создайте) следующий файл:

$ cd /etc/nagios3/conf.d            (для надежности)
$ sudo editor servicegroups.cfg

Вот пример группы сервисов для группы 1:

define servicegroup {
    servicegroup_name   group1-services
    alias           group 1 services
    members  pc1,SSH,pc1,HTTP,pc2,SSH,pc2,HTTP,pc3,SSH,pc3,HTTP,pc4,SSH,pc4,HTTP
        }

Если строка members слишком длинна, используйте "" для разбивки ее на несколько строк, как раньше.

Заметьте что "SSH" и "HTTP" должны быть набраны большими буквами, поскольку именно так определен service_description в файле /etc/nagios3/conf.d/services_nagios2.cfg.

Вам также следует создать записи и для других групп серверов.

ОЧЕНЬ ВАЖНО - когда вы создаете запись для вашей группы, не забудьте использовать localhost вместо pcN для вашего виртуального сервера.

Сохраните изменения, проверьте конфигурацию на ошибки и перезапустите Nagios. Теперь, если вы нажмете на пункт меню "Service Groups" в web-интерфейсе, вы должны увидеть эти машины/сервисы сгруппированными вместе.

7 ЧАСТЬ VIII - конфигурация гостевого доступа к web-интерфейсу

7.1 1. Отредактируйте файл /etc/nagios3/cgi.cfg, чтобы дать гостевой, только для чтения, доступ к web-интерфейсу.

По умолчанию Nagios сконфигурирован так, что он дает полный доступ к интерфейсу для пользователя nagiosadmin. Вы можете поменять имя этого пользователя, добавлять других пользователей, изменять метод аутентификации пользователей, определять, какие пользователи имею доступ к каким ресурсам, и т.д., в файле cgi.cfg.

Вначале давайте создадим пользователя guest в файле htpasswd.users.

$ sudo htpasswd /etc/nagios3/htpasswd.users guest

Вы можете использовать любой пароль (или вовсе никакого). Пароль "guest" выглядит не самым плохим выбором.

Далее, отредактируйте файл /etc/nagios3/cgi.cfg и найдите, какими правами доступа обладает пользователь nagiosadmin. По умолчанию, вы увидите следующие установки (в реальности между этими строками там еще есть комментарии):

authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin

Давайте скажем Nagiosу разрешить пользователю "guest" доступ к некоторой информации. Вы вправе выбрать все что угодно, но обычно настройки делаются примерно такими:

authorized_for_system_information=nagiosadmin,guest
authorized_for_configuration_information=nagiosadmin,guest
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin,guest
authorized_for_all_hosts=nagiosadmin,guest
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin

Заметьте, мы не даем гостевому пользователю доступа к системным командам, командам управления сервисами и командам управления устройствами.

После внесения этих изменений, сохраните файл cgi.cfg, проверьте конфигурацию на ошибки и перезапустите Nagios.

Чтобы увидеть, можете ли вы залогиниться как гостевой пользователь, вам нужно очистить куки в броузере или использовать другой броузер. Вы не заметите никакой разницы в web-интерфейсе. Разница заключается в том, что некоторые возможности, обычно доступные через интерфейс (сделать немедленную проверку хоста или сервиса, добавить коментарий, запланировать проверки и т.д.) не будут работать для гостевого пользователя.

7.2 2. Разрешите внешние команды в nagios.cfg

Это изменение требуется для того, чтобы позволить пользователям "подтверждать получение предупреждения" о проблемах с хостами и сервисами. Права доступа к файлам по умолчанию установлены так, что web-интерфейс не может менять конфигурацию Nagios, поэтому вам нужно сделать их менее жесткими.

Отредактируйте файл "/etc/nagios3/nagios.cfg", и поменяйте строку:

    check_external_commands=0

на

    check_external_commands=1

Сохраните файл и выйдите из редактора.

Затем, выполните следующие команды для изменения прав доступа на постоянной основе:

$ sudo /etc/init.d/nagios3 stop
$ sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
$ sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
$ sudo /etc/init.d/nagios3 start

Когда это сделано, пойдите на "Problems" > "Services (Unhandled)" и найдите сервис в состоянии "красный" (ошбика) или "желтый" (предупреждение). Нажмите на имя сервиса. Затем, в and find a "Service commands" нажмите на "Acknowledge this service problem".

Проблема должна усчезнуть из списка необработанных проблем.