Структура системы

В системе удалённого управления компонентами СУБД ЛИНТЕР реализована универсальная модель управления с возможностью расширения в дальнейшем её основных функциональных возможностей.

Функционально система удалённого управления включают агента системы и набор утилит администрирования.

Состав утилит удалённого управления:

  1. snmpget – получение элемента из дерева MIB;

  2. snmpgetnext – получение следующего элемента из дерева MIB;

  3. snmpset – установка значения элемента дерева MIB;

  4. linsnmp – доступ к LINTER-MIB.

Для обработки запросов управляющей станции, приходящих в виде SNMP пакетов, служит специальный модуль, называемый агентом, который реализован в виде демона. Агент принимает SNMP пакеты и выполняет соответствующие им действия, т.е. посылает значение запрашиваемой переменной, устанавливает значение переменных, выполняет периодическое обновление информации MIB, выполняет в ответ на установку соответствующих переменных некоторые операции.

Работа агента управляется менеджером – программой, работающей на управляющей станции. Функции менеджера удалённого управления компонентами СУБД выполняет набор утилит администрирования. Агент выступает посредником между внутренними структурами управляемого компонента и менеджером.

Обычно взаимодействие происходит по инициативе менеджера и выглядит следующим образом:

  • менеджер отправляет запрос агенту;

  • агент обрабатывает запрос, собирает требуемые данные и отправляет их назад менеджеру;

  • менеджер получает запрошенные данные и обрабатывает их в соответствии с предусмотренным алгоритмом.

В некоторых случаях агент может самостоятельно инициировать обмен данными. Обычно у агента должен быть список важных событий, о наступлении которых он обязан оповестить менеджера. Менеджер по своему усмотрению выполняет какие-либо действия в ответ на оповещение. Например, такими событиями могут быть аварийное завершение работы наблюдаемого компонента, аварийная перезагрузка, вызванная потерей питания или любая другая критическая ситуация. Процедура оповещения в терминах протокола SNMP называется отправкой ловушки (SNMP Trap). В сообщении уведомления агент посылает данные, специфичные для данного события, если они есть в MIB (в описании соответствующего события NOTIFICATION-TYPE присутствует секция OBJECTS). Уведомление посылается сразу нескольким получателям, которые определенны во внутренних таблицах с помощью SNMP-NOTIFICATION-MIB.

Примечание

Получатели определены в таблице snmpTargetAddrTable.

Обычно MIB принято представлять в виде древовидной структуры. Определенные части этого дерева являются обязательными для всех реализаций SNMP.

В то же время производитель программного обеспечения может встраивать внутрь этого дерева свои собственные поддеревья. Чаще всего они находятся в ветке iso.org.dot.internet.private. С помощью такого встраивания реализуется возможность получить доступ к функциям и данным, характерным только для этого компонента. Для примера посмотрим на стандартный образец данных, используемых агентом SNMP, в системе распределенного управления компонентами СУБД ЛИНТЕР (рисунок).

Рисунок. Пример MIB дерева распределенного управления компонентами СУБД ЛИНТЕР

Например, для того чтобы узнать текущее состояние сервиса kernel, нужно пройти на ветку linServiceStatus.kernel. Буквенная запись используется для удобства человека, программные средства (менеджеры и агенты) оперируют числами. Соответственно, каждая часть пути имеет свой числовой идентификатор (таблица 2).

Таблица 2. Соответствие символьных обозначений и цифровых идентификаторов дерева MIB
Символьное обозначениеЦифровой идентификатор
Iso 1
Org 3
Dod 6
Internet 1
Mgmt 2
mib2 1
System 1
sysUpTime 3

Таким образом, местоположение интересующего объекта задается с помощью уникальной комбинации чисел, однозначно идентифицирующей объект, находящийся в любой ветви древа. Эта комбинация чисел называется OID (Object identifier – «Идентификатор объекта»).

В связи с тем, что префикс iso.org.dod.internet.mgmt.mib2 встречается почти в каждом OID, в большинство случаев его можно не прописывать. Подразумевается наличие этого префикса, поэтому очень часто можно использовать сокращенную запись пути в вид system.sysUpTime.

В случае если экземпляр объекта один, ему присваивается номер "0". Доступ к его данным можно получить, обратившись к нему как system.sysUpTime.0.