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

Триггеры

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

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

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

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

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

В фильтре списка триггеров для поля Значение доступны варианты Ok и Проблема (регистр отличается от колонки таблицы).

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

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

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

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

  1. Перейдите в Сбор данных → Узлы сети.
  2. В строке узла сети нажмите Триггеры (или откройте список через подменю настроек узла).
  3. На странице Триггеры нажмите Создать триггер в правом верхнем углу или щёлкните по имени существующего триггера в таблице.
  4. В модальном окне Новый триггер / Триггер заполните вкладки Триггер, Теги и Зависимости и нажмите Добавить или Обновить.

Вкладка Триггер содержит основные атрибуты (пример унаследованного триггера с шаблона Generic SNMP):

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

ПараметрОписание
ИмяИмя триггера (обязательное). Поддерживаются макросы: {HOST.HOST}, {HOST.NAME}, {HOST.CONN}, {HOST.DNS}, {HOST.IP}, {ITEM.VALUE}, {ITEM.LASTVALUE}, {$MACRO}. Макросы $1$9 ссылаются на константы из выражения (корректно в простых выражениях).
Имя событияОтдельное имя для события проблемы (многострочное поле).
Оперативные данныеТекст оперативных данных для события (например, Value: {ITEM.LASTVALUE1}). Отображается в колонке Оперативные данные списка триггеров.
ВажностьУровень: Не классифицировано, Информация, Предупреждение, Средняя, Высокая, Чрезвычайная.
ВыражениеЛогическое выражение (обязательное). Кнопки Добавить (вставка элемента данных) и Конструктор выражения.
Генерация ОК событийВыражение (по умолчанию), Выражение восстановления или Нет.
Режим генерации событий ПРОБЛЕМАОдиночная (одно событие на цикл проблемы) или Множественный (событие при каждом проблемном вычислении).
ОК событие закрываетВсе проблемы или Все проблемы если значения тегов совпадают.
Разрешить закрывать вручнуюФлажок ручного закрытия проблемы в интерфейсе.
Имя записи в менюНазвание пункта контекстного меню (с подсказкой по макросам).
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 состояние хоста не меняется.

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

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

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

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

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