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

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

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

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

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

  1. Save "name" {
    ( File | Pipe | Exec ) "file"
    [ Data "format" ]
    [ State "format" ]
    [ When "evaluate" seconds [ "format" ] ]
    }
    Декларирует метод сохранения данных и определяет его параметры, где
    name
    Уникальное собственное имя метода сохранения.
    file
    Имя файла в который производится вывод данных. Это имя может быть сформировано с помощью strftime(3) формата представления текущего времени. Если в имени файла отсутствует абсолютный путь, то при способе File он адресуется относительно каталога текущего обьекта в иерархии Netmond, к которому применяется этот метод сохранения; а при способах Pipe и Exec он будет вызван с помощью /bin/sh -c file.
    format
    Строка с форматом выводимого текста. Строка может содержать ссылки на имена переменных обьекта, к которому применяется этот метод сохранения, с целью подстановки их текущих значений. Если такая переменная не существует на обьекте, то она остается в тексте в том виде как была указана.
    evaluate
    Строка выражения, по которому производится вычисление условий сохранения данных. Строка может содержать ссылки на имена переменных обьекта, к которому применяется этот метод сохранения, с целью подстановки их текущих значений. Если такая переменная не существует на обьекте, то она остается в тексте в том виде как была указана. Результирующая строка обрабатывается встроенным арифметико-логическим калькулятором. Сохранение данных производится только когда результат вычислений отличен от нуля в течении времени seconds.
    seconds
    Протяженность времени в секундах, в течении которого заданные в evaluate условия должны выполняться. Ноль означает мнгновенную реакцию.

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

    File
    Вывод в файл, данные построчно дописываются в указанный файл. Файл будет создан, если он не существовал. Вывод производится синхронно или, если Netmond собран с POSIX Threads, в отдельном триде.
    Pipe
    Вывод в пайп с указанной программой. Данные поступают строкой на stdin этой программы. Вывод производится асинхронно с помощью vfork(2),execve(2) или, если Netmond собран с POSIX Threads, в отдельном триде.
    Exec
    Запуск указанной программы. Данные передаются как аргументы. Запуск производится асинхронно с помощью vfork(2),execve(2) или, если Netmond собран с POSIX Threads, в отдельном триде.

    Операторы Data, State и When могут быть указаны в методе сохранения совместно, в любом сочетании:

    Data
    Данные выводятся периодически за время сохранения Saving обьекта, к которому применяется этот метод. При этом, если периоды Saving и Polling обьекта кратны, данные выводятся непосредственно за очередным кратным опросом, иначе периодическое сохранение происходит автономно от поллинга.
    State
    Данные выводятся только в момент изменения состояния обьекта (NONE, UP, DOWN и тд), к которому применяется этот метод сохранения. Вывод происходит непосредственно в момент обнаружения такого изменения в результате очередного поллинга или на основании соответствующего трапа.
    When
    Данные выводятся только в случае выполнения указанных условии на обьекте, к которому применяется этот метод сохранения. Вывод происходит в тот момент, как это определено параметром seconds.

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

  2. Save ( Router | Interface | BGP | Temp | "name" ) [ "arguments" ]
    Применение метода сохранения к данному обьекту, указывется только внутри блока обьекта.
    name
    Ссылка на имя предварительно определенного в предыдущей форме метода.
    arguments
    Строка со списком передаваемых аргументов. Аргументы разделяются между собой пробельными символами и нумеруются последовательно от 1 до 9, 0 - собственное имя метода.

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

    Router
    Метод периодически в соответствии с Saving сохраняет значения переменных в файл "%Y.%m.%d" в формате:
    "$time $sysUpTime $ifNumber $ciscoFreeMem.ave $ciscoAvgBusy.ave"
    И при изменении состояния роутера в формате:
    "$time $state $ciscoWhyReload"
    Interface
    Метод периодически в соответствии с Saving сохраняет значения переменных в файл "%Y.%m.%d" в формате:
    "$time $ifInOctets.delta $ifOutOctets.delta $ifInUcastPkts.delta $ifOutUcastPkts.delta $ifInDrops.delta $ifOutDrops.delta $ifInErrors.delta $ifOutErrors.delta"
    При изменении состояния интерфейса в формате:
    "$time $state $ciscoIfReason"
    При условии "$ifSpeed.old && $ifSpeed != $ifSpeed.old" в формате:
    "$time BW $ifSpeed.old -> $ifSpeed"
    BGP
    Метод сохраняет значения переменных в файл "%Y.%m.%d" только при изменении состояния bgp пира в формате:
    "$time $name $state"
    Temp
    Метод сохраняет значения переменных в файл "%Y.%m.%d" только при изменении состояния температурного датчика в формате:
    "$time $name $state $ciscoEnvTempValue"

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


Смотри также:
Date and time representation (strftime)
Evaluated expression (calculator)
Пример настройки сбора статистики по портам

© 1998-2002, Rinet Software