Триггеры - это логические выражения, которые «оценивают» данные, собранные элементами данных, и отражают текущее состояние системы.
Тогда как элементы данных используются для сбора системных данных, крайне непрактично наблюдать за этими данными всё время в ожидании выполнения условия, которое приведет к оповещению или которое заслуживает внимания. Работа по «оценке» данных может быть оставлена на выражения триггеров.
Выражения триггеров позволяют задать порог, при котором состояние данных «приемлемое». Таким образом, если входящие данные превышают приемлемое состояние, триггер «срабатывает» - или, другими словами, меняет состояние на ПРОБЛЕМА.
Триггер может принимать следующие состояния:
Состояние | Описание |
---|---|
ОК | Нормальное состояние триггера. |
Проблема | Что-то случилось. Например, загрузка процессора стала слишком высокой. |
Неизвестно | Значение триггера не может быть вычислено. Смотрите Неизвестное состояние. |
В простом триггере мы можем захотеть установить порог по среднему за пять минут значению каких-либо данных, например, загрузки CPU. Такое можно реализовать, добавив выражение триггера, где:
avg(/host/key,5m)>2
Этот триггер «срабатывает» (переходит в состояние ПРОБЛЕМА), если среднее за пять минут превышает 2.
В более сложном триггере выражение может включать в себя комбинацию из нескольких функций и нескольких порогов. Смотрите также: Выражение триггера.
После включения триггера (изменение его состояния конфигурации с Деактивирован на Активирован) выражение триггера будет вычислено, как только элемент данных из выражения получит свое значение или когда подойдёт время обработки функции, связанной со временем.
Большинство функций триггеров вычисляются на основании данных истории значения элемента данных, в то же время некоторые функции триггеров для долгосрочной аналитики (например, trendavg(), trendcount() и другие) используют данные динамики изменений.
Триггер пересчитывается каждый раз, когда Zabbix сервер получает новое значение, которое является частью выражения. Когда получено новое значение, каждая функция, которая включена в выражение, пересчитывается (не только та, что получила новое значение).
Кроме того, триггер просчитывается каждый раз, когда получено новое значение и каждые 30 секунд, если в выражении триггера используются функции, связанные со временем.
Функции, связанные со временем - nodata(), date(), dayofmonth(), dayofweek(), time(), now(); они пересчитываются каждые 30 секунд процессами синхронизации истории Zabbix (history syncer).
Триггеры, которые ссылаются только на функции динамики изменений, вычисляются один раз за наименьший период в выражении. Смотрите также функции динамики изменений.
Период вычисления используется в функциях, которые ссылаются на историю элемента данных. Это позволяет указать интересующий нас интервал. Интервал можно указать в виде периода времени (30s, 10m, 1h) или в виде диапазонов значений (#5 -для пяти последних значений).
Период вычисления измеряется до «сейчас», где «сейчас» - это время последнего пересчёта триггера (смотрите Время вычисления выше); «сейчас», это не «текущее» время сервера.
Период вычисления указывает либо:
Обратите внимание, что:
Имеется вероятность, что в выражении появится неизвестный операнд, если:
В этом случае триггер обычно вычисляется как «неизвестно» (хотя имеются некоторые исключения). Для получения более подробных сведений смотрите Выражения с неизвестными операндами.
О неизвестных триггерах можно получить оповещение.