Я опрашиваю маршрутизатор по протоколу SNMP и проверяю количество ошибок на интерфейсе. Поскольку счетчики SNMP не могут быть очищены на устройстве, я сохраняю последнее полученное значение во временном файле. Если есть увеличение текущего значения опроса по сравнению с последним, я хотел бы установить сигнал тревоги. Очевидно, что после второй итерации последнее увиденное значение станет текущим значением. По этой причине я хочу иметь возможность удерживать сигнал тревоги до подтверждения, а затем вернуться в состояние ОК. Например, предположим, что я получил эти значения (опрашиваются каждые 30 секунд):
10, 10, 10, 30, 30, 30, ....
Очевидно, что между первым и вторым значениями не установлена сигнализация, поскольку нет дельты. Между вторым и третьим у нас все еще хорошо. Между тремя и четырьмя есть дельта, и необходимо установить аварийный сигнал. Теперь между четырьмя и пятью дельта отсутствует, но мне нужно удерживать будильник с последнего раза (поскольку нет смысла устанавливать будильник на 30 секунд).
Существуют сценарии, которые делают именно то, что вам нужно.
check_snmp_int.pl, например, может это сделать. Вы также можете использовать любой из нескольких других вариантов на основе SNMP в эта категория.
Также может быть что-то специально написано для типа оборудования вы используете.