Приветствую.
Ситуация такая. Мониторю температуру процессора. Выставил в метриках пороговое значение - 70 градусов цельсия.
И вот, наступил момент - температура выросла до порогового значения. Создалась тревога. Отправилось письмо на почту (через команду серверу). Всё ок.
Температура начала прыгать - 70-71. И вот на каждый прыжок с одного значения на другое - мне начали приходить письма. За ночь - несколько сотен.
И вот вопрос. Можно ли как-то сделать, чтобы в течение определённого времени - после первой тревоги - не совершались заданные действия. Иначе говоря, чтобы письма сотнями не отправлялись в таком случае.
PS Нашёл timer key и blocking timer key - но это похоже не то что мне нужно. Первый добавляет задержку, а второй - вообще не понял как работает.
А мне бы так - чтобы было только одно письмо - о первой тревоге.
Тут есть несколько путей решения проблемы:
1) увеличить параметр Samples в настройках трешхолда - тогда он будет срабатывать только если трешхолд совпадает n семплов подряд (например "polling time=1min, samples=3, last > 70" сработает только если температура больше 70 в течении трех минут).
2) кроме отсылки мейла, добавить в это правило EPP action=script, в котором на ноде выставлять время последней отсылки, что-то типа
SetCustomAttribute($node, "lastSent", time());
и фильтром на этом же правиле проверять:
if (lastSent@$node != null && lastSent@$node + 3600 < time()) { // 3600 - разница в секундах
return false;
}
return true;
(альтернативный вариант - сделать правило с stop processing - или еще что-то на скриптах)
2) сделать трешхолд с функцией Script и скриптом вида:
if ($1 > 70) { return true; }
if ($dci->hasActiveThreshold && $1 > 65) { return true; }
return false;
с таким скриптом трешхолд сработает на превышении 70-и градусов, а уйдет в нормальное состояние только когда температура просядет ниже 65.
Ага, спасибо, попробую первый и последний вариант.