Netmond V2. Директива Method


Директива Method совместно с параметрами Polling, Timeout и Retries определяет и характеризует всю работу с поллингом обьектов в Netmond. С помощью поллинга определяется работоспособность обьекта и устанавливаются значения его переменных.

Когда директива Method применяется на верхнем уровне конфигурации Netmond, она декларирует уникальное имя метода и описывает собственный способ опроса обьекта в сети по заданному сценарию в протоколах TCP и UDP или по протоколу ICMP-echo. Такое предварительное описание удобно когда данный метод будет использоваться многократно для опроса разных обьектов в сети. В этом случае на обьекте просто делается ссылка на имя ранее продекларированного метода, при этом в аргументах ему можно передать какие-то индивидуальные параметры данного обьекта. Метод опроса можно полностью описать и непосредственно в блоке данного обьекта.

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

Существует три основные формы использования данной директивы:

  1. Method "name" {
    ( TCP | UDP ) Port port
    [ LocalPort min_port [ max_port ] ]
    [ Address "address" ]
    [ Timeout seconds ]
    [ Retries counter ]
    [ ChatScript {
    [ Send "string" ] ...
    [ Expect "regex" [ { $Variable ... } ] ] ...
    } ]
    }
    Декларирует TCP или UDP метод опроса и определяет его параметры, где
    name
    Уникальное собственное имя метода опроса.
    port
    Номер удаленного запрашиваемого порта.
    min_port и max_port
    Границы номеров локальных портов, по-умолчанию порт выбирается системой. При имитации remote shell они должны быть от 512 до 1023.
    address
    Адрес удаленного запрашиваемого хоста. Используется только для перенаправления опросных сценариев - запрос данных об обьекте производится через специально предусмотренного посредника.
    seconds
    Время ожидания ответа в секундах. Смотри также Timeout.
    counter
    Колличество перезапросов в одной серии. Смотри также Retries.
    string
    Строка посылаемого текста. Строка может быть пустой (посылка текста не требуется) или содержать специальные символы.
    regex
    Ожидаемая последовательность символов в regex(3) формате. Строка может быть пустой, если ожидание ответа не требуется.
    Variable
    Определение новой или ссылка на существующую переменную обьекта - владельца данного метода, для сохранения полученного значения. В regex выражении при этом должны использоваться соответствующие теги.

    Строки string и regex могут содержать ссылки на входные аргументы метода. Такие ссылки обозначаются как $0..$9, где $0 является ссылкой на собственное имя метода.

  2. Method "name" {
    ICMP
    [ Size bytes ]
    [ Send packets [ Expect packets ] ]
    [ Timeout seconds ]
    [ Retries counter ]
    }
    Декларирует ICMP-echo метод опроса и определяет его параметры, где
    name
    Уникальное собственное имя метода опроса.
    bytes
    Размер пакета в байтах, минимальный по-умолчанию.
    packets
    Общее колличество пакетов, по-умолчанию 0.
    seconds
    Время ожидания ответа в секундах. Смотри также Timeout.
    counter
    Колличество перезапросов в одной серии. Смотри также Retries.

    При применении ICMP-echo метода к обьекту производится последовательная посылка в серии из Send контрольных запросов, каждый размером Size байт. Обьект получает состояние UP только в случае когда получено Expect откликов. По-умолчанию, Expect равно Send. Если Send равно 0, то метод просто взводит обьект в UP.

    Колличество пакетов Send коррелирует с колличеством перезапросов Retries, установка Retries в 1 дает "чистый" ожидаемый результат. Результаты работы фиксируются в переменных обьекта по имени метода:

    $name
    Среднее время отклика в милисекундах, тип float - число с точкой.
    $name.send
    Колличество посланных пакетов.
    $name.recv
    Колличество ответных пакетов.

    Метод ICMP-echo не использует IP опцию Record Route, для получения топологии можно параллельно использовать встроенный метод Ping.

  3. Method ( Ping | Router | SNMP | DNS | Radius | Tacacs | "name" ) [ "arguments" ]
    Применение метода опроса к данному обьекту, указывется только внутри блока обьекта. При этом у обьекта появляется переменная с именем метода опроса, которая содержит строку с последней диагностикой его работы.
    name
    Ссылка на имя предварительно определенного в предыдущей форме метода.
    arguments
    Строка со списком передаваемых аргументов. Аргументы разделяются между собой пробельными символами и нумеруются последовательно от 1 до 9, 0 - собственное имя метода.

    Как мы видим из синтаксиса, опрос обьектов в сети может производиться с помощью встроенных в Netmond способов:

    Ping
    ICMP-echo запрос с IP опцией Record Route. Метод используется для определения состояния обьекта в сети (UP или DOWN), замера времени отклика и установки топологических зависимостей до него. В переменной $PING возвращается замер времени отклика в милисекундах.
    ВНИМАНИЕ: Не все операционные системы корректно реагируют на эту опцию, Ping пожет не проходить именно по этой причине, ипользуйте системную утилиту ping -R для выяснения этого факта.
    Router
    SNMP v1 комплексный (сессионный) опрос обьекта с индексированием. Метод используется для опроса предопределенных SNMP переменных обьекта, имеющего Interface порты, BGP сессии и температурные датчики Env Temp. С его помощью определяется состояние таких подобьектов, их параметры, фиксируется трафик на интерфейсах, снимаются значения температуры и пр. Метод снимает значения SNMP переменных обьекта $sysObjID, $sysUpTime и $sysName, если применяется на роутере или свиче Cisco, то дополнительно снимает с него значения $ciscoFreeMem, $ciscoAvgBusy и $ciscoWhyReload.
    В arguments может быть передано SNMP-Community данного обьекта, по-умолчанию это "public".
    SNMP
    SNMP v1 Get запрос. Метод используется для получения значений произвольных SNMP переменных обьекта, например:
    $sysContact 1.3.6.1.2.1.1.4.0
    $sysLocation 1.3.6.1.2.1.1.6.0
    Method SNMP "community" { $sysContact $sysLocation }
    DNS
    Стандартный DNS запрос. Метод используется для определения состояния сервера и расположенных на нем доменных зонах. Аргументом метода является имя проверямой на авторитетность SOA доменной зоны. По-умолчанию запрашивается A запись зоны "." (список корневых серверов). В переменной $DNS возвращается строка диагностики.
    Radius
    Radius запрос на аутентификацию. Используется для определения состояния AAA сервера. Метод запрашивает Service-Type = Authenticate-Only для имени пользователя netmon с паролем как secret key, указанным в качестве arguments.
    Оба возвращаемых кода ответа - Access-Accept и Access-Reject являются правильным ответом. Считается, что раз сервер ответил что-то членораздельное, то он однозначно работает! При этом в переменной $RADIUS фиксируется строка диагностики, которую сервер может возвращать в атрибутах ответа. А вот если secret key указан не верно, то сервер проигнорирует такой запрос и мы пометим его состояние в DOWN.
    Tacacs
    Метод Tacacs действует практически также как Radius, запрашивается PAP-Authentication. Метод без аргумента проверяет только наличие коннекта на порту сервера. Диагностика находится в переменной $TACACS.

Методы формируются в опросный список обьекта в порядке их указания. Колличество методов в одном списке ограничено лишь временнем последовательной обработки всего списка, которое не должно превышать интервал поллинга Polling этого обьекта.


Смотри также:
Директива Object
Regular expression (regex)
Пример настройки опроса обьекта методом Remote Shell

© 1998-2002, Rinet Software