Структура системы
В системе удалённого управления компонентами СУБД ЛИНТЕР реализована универсальная модель управления с возможностью расширения в дальнейшем её основных функциональных возможностей.
Функционально система удалённого управления включают агента системы и набор утилит администрирования.
Состав утилит удалённого управления:
-
snmpget
– получение элемента из дерева MIB; -
snmpgetnext
– получение следующего элемента из дерева MIB; -
snmpset
– установка значения элемента дерева MIB; -
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).
Символьное обозначение | Цифровой идентификатор |
---|---|
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
.