3 Триггеры

Обзор

Триггеры - это логические выражения, которые «оценивают» данные, собранные элементами данных, и отражают текущее состояние системы.

Тогда как элементы данных используются для сбора системных данных, крайне непрактично наблюдать за этими данными всё время в ожидании выполнения условия, которое приведет к оповещению или которое заслуживает внимания. Работа по «оценке» данных может быть оставлена на выражения триггеров.

Выражения триггеров позволяют задать порог, при котором состояние данных «приемлемое». Таким образом, если входящие данные превышают приемлемое состояние, триггер «срабатывает» - или, другими словами, меняет состояние на ПРОБЛЕМА.

Триггер может принимать следующие состояния:

Состояние Описание
ОК Нормальное состояние триггера.
Проблема Что-то случилось. Например, загрузка процессора стала слишком высокой.
Неизвестно Значение триггера не может быть вычислено. Смотрите Неизвестное состояние.

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

  • к значению, полученному в ключе элемента данных, применяется функция 'avg'
  • используется период оценки в пять минут
  • порог задаётся равным '2'
   avg(/host/key,5m)>2

Этот триггер «срабатывает» (переходит в состояние ПРОБЛЕМА), если среднее за пять минут превышает 2.

В более сложном триггере выражение может включать в себя комбинацию из нескольких функций и нескольких порогов. Смотрите также: Выражение триггера.

После включения триггера (изменение его состояния конфигурации с Деактивирован на Активирован) выражение триггера будет вычислено, как только элемент данных из выражения получит своё значение или когда подойдёт время обработки функции даты и времени и/или функции nodata().

Большинство функций триггеров вычисляются на основании данных истории значения элемента данных, в то же время некоторые функции триггеров для долгосрочной аналитики (например, trendavg(), trendcount() и другие) используют данные динамики изменений.

Время вычисления

Триггер пересчитывается каждый раз, когда Zabbix сервер получает новое значение, которое является частью выражения. Когда получено новое значение, каждая функция, которая включена в выражение, пересчитывается (не только та, что получила новое значение).

Кроме того, триггер пересчитывается каждый раз, когда получено новое значение и каждые 30 секунд, если в выражении триггера используются функции даты и времени и/или функция nodata().

Функции даты и времени и/или функция nodata() пересчитываются каждые 30 секунд процессами синхронизации истории Zabbix (history syncer).

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

Период вычисления

Период вычисления используется в функциях, которые ссылаются на историю элемента данных. Это позволяет указать интересующий нас интервал. Интервал можно указать в виде периода времени (30s, 10m, 1h) или в виде диапазонов значений (#5 -для пяти последних значений).

Период вычисления измеряется до «сейчас», где «сейчас» — это время последнего пересчёта триггера (смотрите Время вычисления выше); «сейчас» — это не «текущее» время сервера.

Период вычисления указывает либо:

  • Учитывать все значения между «сейчас - период времени» и «сейчас» (или, при наличии сдвига времени, между «сейчас - сдвиг_времени - период времени» и «сейчас - сдвиг_времени»)
  • Учитывать не более чем количество значений из прошлого, до «сейчас»
    • Если имеется 0 доступных значений за этот период времени или указанное количество — тогда триггер или вычисляемый элемент данных, который использует такую функцию, становится неподдерживаемым

Обратите внимание, что:

  • Если в триггере используется одна функция (которая ссылается на данные истории), «сейчас» всегда последнее полученное значение. Например, если последнее значение получено час назад, период вычисления будет рассматриваться до последнего значения часом ранее.
  • Новый триггер вычисляется сразу, как только получено первое значение (функции истории); он будет вычисляться в течение 30 секунд при наличии функций даиы и времени и функции nodata() . Таким образом, триггер будет вычислен, даже если заданный период оценки (например, один час) еще не прошёл с момента создания триггера. Триггер также будет вычислен после первого значения — даже если диапазон оценки был задан, например, последними десятью значениями.

Неизвестное состояние

Имеется вероятность, что в выражении появится неизвестный операнд, если:

  • использован неподдерживаемый элемент данных
  • вычисление функции по поддерживаемому элементу данных приводит к ошибке

В этом случае триггер обычно вычисляется как «неизвестно» (хотя имеются некоторые исключения). Для получения более подробных сведений смотрите Выражения с неизвестными операндами.

О неизвестных триггерах можно получить оповещение.