Триггеры
Триггеры — логические выражения, которые оценивают собранные элементами данных значения и отражают текущее состояние системы.
Элементы данных собирают данные о системе, но непрактично постоянно следить за ними в ожидании условия для оповещения. Оценку данных выполняют выражения триггеров.
Выражения триггеров задают порог, при превышении которого триггер переходит в состояние ПРОБЛЕМА.
Состояния триггера
| Значение | Описание |
|---|---|
| ОК | Нормальное состояние триггера. |
| ПРОБЛЕМА | Произошло событие, требующее внимания (например, слишком высокая загрузка процессора). |
Состояние триггера пересчитывается при каждом новом значении, входящем в выражение.
Если в выражении используются функции, связанные со временем (nodata(), date(), dayofmonth(), dayofweek(), time(), now()), триггер пересчитывается каждые 30 секунд процессом zabbix timer.
Возможны выражения триггеров разной сложности.
Настройка триггера
- Перейдите в Сбор данных → Узлы сети.
- Нажмите Триггеры в строке узла сети.
- Нажмите Создать триггер (или имя триггера для редактирования).
- Введите параметры в форме триггера.
Вкладка Триггер содержит основные атрибуты.

| Параметр | Описание |
|---|---|
| Имя | Имя триггера. Поддерживаются макросы: {HOST.HOST}, {HOST.NAME}, {HOST.CONN}, {HOST.DNS}, {HOST.IP}, {ITEM.VALUE}, {ITEM.LASTVALUE}, {$MACRO}. Макросы $1…$9 ссылаются на константы из выражения (корректно в простых выражениях). Пример: имя «Загрузка процессора выше $1 на {HOST.NAME}» при выражении {New host:system.cpu.load[percpu,avg1].last()}>5 станет «Загрузка процессора выше 5 на New host». |
| Выражение | Логическое выражение для вычисления состояния триггера. |
| Формирование множественных событий ПРОБЛЕМА | При включении генерируется событие при каждом проблемном вычислении триггера. |
| Описание | Дополнительная информация: инструкции по устранению, контакты ответственного и т. п. |
| URL | Если задан, используется на странице «Состояние триггеров». Поддерживается макрос {TRIGGER.ID}. |
| Важность | Уровень важности (кнопки в форме). |
| Активировано | Снятие флажка отключает триггер. |
Вкладка Зависимости содержит зависимости триггера. Нажмите Добавить для новой зависимости.
Можно клонировать существующий триггер кнопкой Клонировать и сохранить под другим именем.
Выражение триггера
Выражения триггеров гибкие и позволяют строить сложные логические проверки по статистике мониторинга.
Простой шаблон:
{<сервер>:<ключ>.<функция>(<параметр>)}<оператор><константа>
Функции
Функции триггеров ссылаются на собранные значения, текущее время и другие факторы. Доступен полный список поддерживаемых функций в документации Zabbix.
Параметры функций
Большинство числовых функций принимают количество секунд. Префикс # меняет смысл параметра:
sum(600)— сумма всех значений за 600 секундsum(#5)— сумма последних 5 значений
Для last с # выбирается n-е предыдущее значение: при значениях 3, 7, 2, 6, 5 (от нового к старому) last(#2) вернёт 7, last(#5) — 5.
Функции avg, count, last, min, max поддерживают второй параметр time_shift (данные из прошлого). Например, avg(1h,1d) — среднее за час сутки назад.
Триггеры оценивают историю. Если история недоступна (в том числе при сдвиге времени), тренды не используются — история должна храниться не меньше периода функций.
В выражениях можно использовать единицы времени: 5m вместо 300, 1d вместо 86400. 1K = 1024 байта.
Операторы
Операторы (по убыванию приоритета):
| Приоритет | Оператор | Определение |
|---|---|---|
| 1 | / | Деление |
| 2 | * | Умножение |
| 3 | - | Арифметический минус |
| 4 | + | Арифметический плюс |
| 5 | < | Менее чем: A<B ⇔ (A<=B-0.000001) |
| 6 | > | Более чем: A>B ⇔ (A>=B+0.000001) |
| 7 | # | Не равен: A#B ⇔ (A<=B-0.000001) | (A>=B+0.000001) |
| 8 | = | Равен: A=B ⇔ (A>B-0.000001) & (A<B+0.000001) |
| 9 | and | Логическое И |
| 10 | or | Логическое ИЛИ |
Примеры триггеров
Пример 1 — высокая загрузка CPU на www.zabbix.com:
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5
Пример 2 — перегрузка www.zabbix.com:
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
Пример 3 — изменился файл /etc/passwd:
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}=1
Пример 4 — трафик на eth0:
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K
Пример 5 — оба SMTP-сервера недоступны:
{smtp1.zabbix.com:net.tcp.service[smtp].last()}=0&{smtp2.zabbix.com:net.tcp.service[smtp].last()}=0
Пример 6 — агент нуждается в обновлении:
{zabbix.zabbix.com:agent.version.str("beta8")}=1
Пример 7 — сервер недоступен:
{zabbix.zabbix.com:icmpping.count(30m,0)}>5
Пример 8 — нет данных 3 минуты (tick — тип Zabbix trapper, данные через zabbix_sender):
{zabbix.zabbix.com:tick.nodata(3m)}=1
Пример 9 — активность CPU ночью (00:00–06:00):
{zabbix:system.cpu.load[all,avg1].min(5m)}>2&{zabbix:system.cpu.load[all,avg1].time()}>000000&{zabbix:system.cpu.load[all,avg1].time()}<060000
Пример 10 — рассинхронизация времени (более 10 секунд):
{MySQL_DB:system.localtime.fuzzytime(10)}=0
Пример 11 — средняя загрузка сегодня vs вчера (time_shift):
{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2
Гистерезис
Разные пороги для перехода в ПРОБЛЕМА и возврата в ОК.
Пример 1 — температура в серверной: ПРОБЛЕМА выше 20 °C, восстановление ниже 15 °C:
({TRIGGER.VALUE}=0&{server:temp.last()}>20)|({TRIGGER.VALUE}=1&{server:temp.last()}>15)
Используется макрос {TRIGGER.VALUE} — текущее числовое состояние триггера.
Пример 2 — мало свободного места: ПРОБЛЕМА если меньше 10 ГБ за 5 минут, восстановление если больше 40 ГБ за 10 минут:
({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G)|({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)
Зависимости триггеров
Доступность узла может зависеть от другого (сервер за роутером). Без зависимостей при падении роутера придут оповещения и по роутеру, и по серверу.
СМ «Пульт» не поддерживает зависимости между узлами напрямую, но поддерживает зависимости между триггерами. Зависимый триггер не сменит состояние, пока триггер-родитель в состоянии ПРОБЛЕМА — действия и оповещения для зависимого не выполняются.
Подавление не действует, если триггер-родитель отключён, отключён его элемент данных или узел сети элемента данных.
Правила:
- Зависимость можно добавить между триггерами любых узлов сети, без циклов.
- Зависимость шаблон → шаблон: если триггер шаблона A зависит от шаблона B, A подключается к узлу только вместе с B; B может подключаться отдельно.
- Зависимость шаблон → узел сети: при линковке шаблона на узле создаётся зависимый триггер (например, шаблон серверов зависит от триггеров роутера).
- Зависимость узел сети → шаблон добавить нельзя.
Настройка зависимости
В форме триггера нажмите Добавить в блоке «Новая зависимость» и выберите один или несколько триггеров-родителей.
После Сохранить в списке отображается индикация зависимости.
Пример цепочки: Zabbix — Роутер1 — Роутер2 — Хост
- «Хост недоступен» зависит от «Роутер2 недоступен»
- «Роутер2 недоступен» зависит от «Роутер1 недоступен»
Перед сменой состояния «Хост недоступен» проверяются зависимости рекурсивно; при ПРОБЛЕМА на Роутер1 или Роутер2 состояние хоста не меняется.
Важность триггера
| Важность | Определение | Цвет |
|---|---|---|
| Не классифицировано | Неизвестная важность | Серый |
| Информация | В информационных целях | Светло-зелёный |
| Предупреждение | Предупреждающий уровень | Жёлтый |
| Средняя | Средняя проблема | Оранжевый |
| Высокая | Важное событие | Красный |
| Чрезвычайная | Критическое (финансовые потери и т. п.) | Ярко-красный |
Важность используется для:
- визуального представления триггеров (цвета);
- звуковой сигнализации на странице состояния триггеров;
- пользовательских действий (разные каналы оповещения по важности);
- ограничения действий по условиям важности.
Имена важностей и цвета можно настроить.