Перейти к основному содержимому
Версия: Пульт 2.2.0

Триггеры

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

Элементы данных собирают данные о системе, но непрактично постоянно следить за ними в ожидании условия для оповещения. Оценку данных выполняют выражения триггеров.

Выражения триггеров задают порог, при превышении которого триггер переходит в состояние ПРОБЛЕМА.

Состояния триггера

ЗначениеОписание
ОКНормальное состояние триггера.
ПРОБЛЕМАПроизошло событие, требующее внимания (например, слишком высокая загрузка процессора).

Состояние триггера пересчитывается при каждом новом значении, входящем в выражение.

Если в выражении используются функции, связанные со временем (nodata(), date(), dayofmonth(), dayofweek(), time(), now()), триггер пересчитывается каждые 30 секунд процессом zabbix timer.

Возможны выражения триггеров разной сложности.

Настройка триггера

  1. Перейдите в Сбор данных → Узлы сети.
  2. Нажмите Триггеры в строке узла сети.
  3. Нажмите Создать триггер (или имя триггера для редактирования).
  4. Введите параметры в форме триггера.

Вкладка Триггер содержит основные атрибуты.

Настройка триггера

ПараметрОписание
ИмяИмя триггера. Поддерживаются макросы: {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&lt;Менее чем: A<B ⇔ (A<=B-0.000001)
6&gt;Более чем: 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)
9andЛогическое И
10orЛогическое ИЛИ

Примеры триггеров

Пример 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 состояние хоста не меняется.

Важность триггера

ВажностьОпределениеЦвет
Не классифицированоНеизвестная важностьСерый
ИнформацияВ информационных целяхСветло-зелёный
ПредупреждениеПредупреждающий уровеньЖёлтый
СредняяСредняя проблемаОранжевый
ВысокаяВажное событиеКрасный
ЧрезвычайнаяКритическое (финансовые потери и т. п.)Ярко-красный

Важность используется для:

  • визуального представления триггеров (цвета);
  • звуковой сигнализации на странице состояния триггеров;
  • пользовательских действий (разные каналы оповещения по важности);
  • ограничения действий по условиям важности.

Имена важностей и цвета можно настроить.