Netmond V2. ДизайнВ этом разделе кратко описываются основы конструкции и функционирования Netmond.
Принцип действияВсе функционирование Netmond построено вокруг одного главного цикла ассинхронной работы с сокетами - классической схемы сервера с одним процессом в памяти, способным обслуживать множество сетевых процессов одновременно; и одним файлом конфигурации, где предварительно описываются все необходимые действия по мониторингу сети. Netmond рассматривает сеть как иерархическую совокупность обьектов
определенных типов.
Мониторинг обьектов может осуществляться одновременно двумя, принципиально разными способами:
Одновременное применение этих способов мониторинга позволяет нивелировать недостатки друг друга. Опрос обьектов, по-возможности, распределяется на интервале поллинга в зависимости от дистанции (колличества хопов) до обьекта - близкие обьекты опрашиваются прежде более удаленных. Эта дистанция и некоторые другие зависимости динамически определяются в процессе работы программы с помощью ICMP echo с IP опцией Record-Route (встроенный метод PING). Накопленные данные Netmond хранит в переменных
в памяти, сохраняются только текущие и предыдущие значения каждой переменной.
За каждым обьектом мониторинга закрепляется некоторый фиксированный набор предопределенных переменных, свойственных данному обьекту. Пользователь может определить также и собственные переменные, значения которых планирует получать из сети произвольно заданными способами. Доступ к результирующим значениям переменных возможен с помощью различных способов сохранения данных, которые обеспечивают:
В любой момент времени можно получить доступ к данным Netmond и по запросу из внешних сетевых процессов, для этого в программе предусмотрен сервер NetState со специальным протоколом обмена. Типы обьектовОбьекты мониторинга группируются по типам, определящим особенности функционирования обьекта. Название типа отражает сущность обьекта или его предназначение. Следующие типы обьектов мониторинга определены в Netmond:
У каждого OBJECT может быть индивидуально определено:
У INTERFACE могут определяться:
У SERVICE могут определяться:
У BGPAS могут определяться:
У ENVTEMP могут определяться:
Все эти типы обьектов представлены в Netmond в виде соответствующих структур данных, динамически распределяемых в памяти. Что-бы определить текущее состояние и получить необходимые данные об обьектах мониторинга их нужно опросить и/или ожидать от них соответствующих SNMP трапов. Методы опросаМониторинг сетевых обьектов с помощью поллинга осуществляется разнообразными методами опроса METHOD. Различные методы группируются в опросные списки и привязываются к обьектам мониторинга, каждый из методов в этом списке выполняет определенные для него действия по сетевому взаимодействию с данным обьектом. Такие действия могут определяться пользователем с помощью скриптов-сценариев или могут использоваться заранее предусмотренные сценарии и протоколы. Методы в списке METHOD выполняются на обьекте последовательно,
в порядке как указано пользователем. Работа списка прерывается на первом же
методе который не смог отработать и завершился по таймауту или вернул
какой-либо статус ошибки.
Произвольными методами опроса могут обладать только обьекты OBJECT и SERVICE. Обьекты остальных типов опрашиваются по SNMP специально предусмотренными алгоритмами, которые реализованы во встроенном методе ROUTER, применяемом на обьекте OBJECT. С помощью METHOD возможна также установка значений произвольных переменных VARIABLE данного обьекта. В Netmond предусмотрены следующие опросные протоколы и сценарии для использования в качестве METHOD на обьектах типа OBJECT и SERVICE:
Все протоколы и сценарии оформлены в виде отдельных независимых модулей с унифицированным Netmond API, предусмотрена возможность добавления новых модулей по мере развития программы. SNMP трапыДля мониторинга сетевых обьектов с помощью трапинга в Netmond может быть активизирован специальный трап-сервер, собирающий все поступающие от сетевых агентов SNMP сообщения-трапы. Таким образом агенты могут оперативно извещать сервер о каких-то событиях, происходящих на оборудовании сети. В каждом таком сообщении передается определенный набор SNMP переменных,
состоящих из имени переменной и ее текущего значения.
Для сопоставления интересующих нас SNMP переменных с более удобными в использовании текстовыми именами и для их привязки к сетевым обьектам мониторинга в Netmond возможно описание произвольных трап методов TRAP. Трап-сервер Netmond поддерживает следующие виды SNMP сообщений, которые не требуют дополнительного описания:
Все другие разновидности трапов должны быть предварительно описаны как методы TRAP в файле конфигурации Netmond и применены на соответствующих обьектах мониторинга с указанием всех интересующих переменных VARIABLE. Представление данныхВсе данные хранятся в переменных VARIABLE в памяти программы. Некоторые переменные могут быть заданы параметрами конфигурации, они остаются неизменными до следующей переконфигурации. Например, имя обьекта мониторинга это константа. Другие переменные могут периодически изменять свои значения, например в результате опроса обьектов в сети. Для упрощения настройки в Netmond предусмотрен ряд типовых предопределенных переменных, среди которых переменными SNMP являются переменные обьекта, опрашиваемого с помощью встроенного метода ROUTER. Все константы и некоторые переменные являются статическими, то есть непосредственно переменными кода программы - HardCode VARIABLE. Другие данные хранятся в памяти Netmond в формализованном виде в специальных, динамически распределяемых структурах - Soft VARIABLE. Значения последних могут быть неопределены в первоначальные моменты времени. Переменные группируются в списки и индивидуально закрепляются за каждым
сетевым обьектом мониторинга, у разных типов обьектов существует разный набор
предопределенных переменных.
Все константы и переменные состоят из собственного имени и хранимого
значения. Имя переменной обычно отражает смысл содержимого и может состоять
из букв латинского алфавита на верхнем и нижнем регистре, цифр и знака
подчеркивания - [a-zA-Z0-9_]. Имя должно начинатся с буквы и может
иметь длину до 100 символов. Регистр букв не учитывается, однако имена всех
HardCode VARIABLE для удобства представлены в верхнем регистре.
Значения переменных VARIABLE могут принимать один из следующих типов:
Soft VARIABLE не имеют фиксированного типа, одна и та же переменная в разные моменты времени может хранить значения разных типов. При выводе данных типа String значение всегда заключается в двойные апострофы. Если значение переменной не определено, то при выводе оно может быть представлено специальным ключевым словом Unused. В каждой Soft VARIABLE хранится:
Дополнительно в числовых Soft VARIABLE типа Integer, Unsigned или Floating вычисляются и хранятся следующие расширенные значения:
Такие значения вычисляются за каждый период сохранения данных SAVING обьекта - владельца переменной (за это время может пройти множество его поллингов POLLING). Значения некоторых целочисленных Soft variables могут быть представлены в виде строки состояния (UP, DOWN, ESTABLISHED и тд). Для ссылки на такие расширенные значения используется уточняющий суффикс, следующий за именем переменной через точку:
На имена переменных можно ссылаться из файла конфигурации или по сетевому запросу извне к встроенному NetState серверу. Напомним, что на любые переменные и константы можно ссылаться по их именам без учета регистра символов. Сохранение данныхВывод данных из Netmond может производиться с помощью различных методов сохранения данных SAVE. На любой обьект мониторинга независимо от его типа может быть назначен целый ряд разнообразных способов сохранения данных. Для каждого типа обьекта предусмотрен простой и наиболее оптимальный метод SAVE, который сохраняет значения определенных переменных VARIABLE в обычный текстовый файл. Но возможно также описать и собственный метод сохранения данных в произвольном формате и несколькими способами. Медоты сохранения данных SAVE предоставляют три способа выдачи значений переменных VARIABLE:
Выдача значений VARIABLE может производиться:
Вывод осуществляется в определенном пользователем формате представления текстовых данных. С использованием условных методов сохранения возможна реализация простой системы оповещения технического персонала о неполадках в сети. NetState серверКак уже упоминалось выше, Netmond хранит все накопленные данные о текущем состоянии сети у себя в памяти, в специально предназначенных контейнерах - переменных VARIABLE. Значения VARIABLE могут вводиться в программу по результатам работы поллинга и трапинга, а выводиться с помощью разнообразных методов сохранения SAVE. Однако вывод данных с помощью SAVE выполняется только по инициативе самого Netmond (периодически или в зависимости от каких-то условий) совершенно конкретных значений, предусмотренных конфигурацией программы. Что может быть очень удобно при решении задач накопления и долговременного хранения данных, но, например, практически не пригодно для задачи получения мнговенной актуальной картины состояния всей сети в реальном времени. Для решения задачи вывода любых данных в произвольные моменты времени в Netmond встроен специальный сервер NetState, который обеспечивает авторизованным сетевым клиентам асинхронный доступ ко всему массиву переменных VARIABLE на чтение. Весь массив переменных VARIABLE представляется в виде иерархии имен переменных и их владельцев, разделенных специальным символом `!': Возможно получение текущих и предыдущих значений переменных, а также выбор интересующих переменных по REGEX-маскам на их имена. Первоначально механизм NetState был предусмотрен для динамической выдачи текущего состояния сети непосредственно в интерфейс оператора, что и обусловило его название. Смотри также: © 1998-2002, Rinet Software
|