3. Триггеры
Обзор
Триггеры представляют собой логические выражения, которые «оценивают» данные, собранные элементами данных, и отражают текущее состояние системы.
Элементы данных используются для сбора данных о системе, однако постоянно отслеживать эти данные в ожидании условия, требующего внимания или сигнализирующего о проблеме, крайне непрактично. Задачу «оценки» данных можно возложить на выражения триггеров.
Выражения триггеров позволяют определить порог состояния данных, которое считается «допустимым». Поэтому, если поступающие данные превысят допустимый уровень, триггер «сработает» — то есть изменит свой статус на PROBLEM.
Триггер может иметь следующие статусы:
| Status | Description |
|---|---|
| OK | Это нормальный статус триггера. |
| Problem | Что-то произошло. Например, нагрузка на процессор слишком высока. |
| Unknown | Значение триггера невозможно вычислить. См. раздел Статус Unknown. |
В простом триггере может потребоваться установить порог для среднего значения некоторых данных за пять минут, например загрузки ЦП. Для этого необходимо определить выражение триггера, в котором:
- к значению, полученному в ключе элемента данных, применяется функция 'avg'
- для оценки используется период в пять минут
- устанавливается порог '2'
avg(/host/key,5m)>2
Этот триггер «сработает» (перейдет в состояние PROBLEM), если среднее значение за пять минут превысит 2.
В более сложном триггере выражение может включать комбинацию нескольких функций и нескольких порогов. См. также: Выражение триггера.
Нельзя создавать триггеры для элементов данных, возвращающих значения с двоичным типом данных.
После включения триггера (изменение его состояния конфигурации с Деактивирован на Активирован) выражение триггера будет вычислено, как только элемент данных из выражения получит своё значение или когда подойдёт время обработки функции даты и времени и/или функции nodata().
Большинство функций триггеров вычисляются на основании данных истории значения элемента данных, в то же время некоторые функции триггеров для долгосрочной аналитики (например, trendavg(), trendcount() и другие) используют данные динамики изменений.
Время вычисления
Триггер пересчитывается каждый раз, когда Zabbix сервер получает новое значение, которое является частью выражения. Когда получено новое значение, каждая функция, которая включена в выражение, пересчитывается (не только та, что получила новое значение).
Кроме того, триггер пересчитывается каждый раз, когда получено новое значение, и каждые 30 секунд, если в выражении триггера используются функции даты и времени и/или функция nodata().
Функции даты и времени и/или функция nodata() пересчитываются каждые 30 секунд процессами синхронизации истории Zabbix (history syncer).
Триггеры, которые ссылаются только на функции динамики изменений, вычисляются один раз за наименьший период в выражении. Смотрите также функции динамики изменений.
Период оценки
Период оценки используется в функциях, ссылающихся на историю элемента данных. Он позволяет указать интересующий нас интервал. Его можно задать как период времени (30s, 10m, 1h) или как диапазон значений (#5 - пять последних значений).
Период оценки измеряется до «текущего момента» - времени последнего пересчета триггера (см. раздел Время расчета выше); «текущий момент» не соответствует текущему времени сервера.
Период оценки задает одно из следующего:
- Все значения между «текущим моментом - период времени» и «текущим моментом» (или с учетом временного сдвига - между «текущим моментом - временной сдвиг - период времени» и «текущим моментом - временной сдвиг»).
- Указанное количество прошлых значений вплоть до «текущего момента».
Если за указанный период оценки нет данных, триггер или вычисляемый элемент данных, использующий эту функцию, становится неподдерживаемым.
Обратите внимание:
- Если в триггере используется только одна функция (ссылающаяся на историю данных), «текущим моментом» всегда является время получения последнего значения. Например, если последнее значение было получено час назад, период оценки будет отсчитываться до последнего значения, полученного час назад.
- Новый триггер рассчитывается сразу после получения первого значения (для функций истории); для функций даты и времени и nodata() расчет выполняется в течение 30 секунд. Таким образом, триггер будет рассчитан, даже если с момента его создания еще не прошел заданный период оценки (например, один час). Триггер также будет рассчитан после получения первого значения, даже если диапазон оценки задан, например, как десять последних значений.
Неизвестное состояние
Имеется вероятность, что в выражении появится неизвестный операнд, если:
- использован неподдерживаемый элемент данных
- вычисление функции по поддерживаемому элементу данных приводит к ошибке
В этом случае триггер обычно вычисляется как «неизвестно» (хотя имеются некоторые исключения). Для получения более подробных сведений смотрите Выражения с неизвестными операндами.
О неизвестных триггерах можно получить оповещение.