4 Рекомендации по использованию триггеров

Триггеры — это мощный инструмент, но они также могут создавать нежелательный шум оповещений. Чтобы видеть больше реальных сигналов и меньше шума, следуйте этим рекомендациям:

  1. Снизьте чувствительность триггеров. Вместо оповещения по последнему значению (слишком высокому/слишком низкому) анализируйте среднее значение за более длительный период, используя такие функции, как avg, min и max.

  2. Рассмотрите возможность использования функции percentile (установите её на 95% или 5%) в триггерах, если хотите избежать оповещений из-за случайных всплесков и падений.

  3. Используйте гистерезис, чтобы избежать дребезга триггера — частых изменений состояния триггера (OK ↔ Problem). Непрерывность проблемного состояния можно определить, добавив выражение восстановления (отдельное условие для устранения проблемы).

  4. Используйте зависимости триггеров, чтобы избежать оповещений, не связанных с первопричиной.

  5. Используйте важность триггера, чтобы оповещать только о более серьёзных проблемах.

  6. Определите окна обслуживания.

Гистерезис

Иногда между состояниями проблемы и восстановления требуется интервал, а не просто пороговое значение. Например, если мы хотим определить триггер, который сообщает о проблеме, когда температура в серверной превышает 20°C, и хотим, чтобы он оставался в состоянии проблемы до тех пор, пока температура не опустится ниже 15°C, простого порога триггера на уровне 20°C будет недостаточно.

Вместо этого сначала нужно определить выражение триггера для события проблемы (температура выше 20°C). Затем нужно определить дополнительное условие восстановления (температура ниже 15°C). Это делается путем определения выражения восстановления при настройке триггера.

В этом случае восстановление после проблемы происходит в два этапа:

  • Сначала выражение проблемы (температура выше 20°C) должно принять значение FALSE
  • Затем выражение восстановления (температура ниже 15°C) должно принять значение TRUE

Выражение восстановления вычисляется только после того, как событие проблемы устранено. Само по себе значение TRUE для выражения восстановления не устраняет проблему, если выражение проблемы по-прежнему имеет значение TRUE!

Пример

Температура в серверной слишком высокая.

Выражение проблемы:

last(/server/temp)>20

Выражение восстановления:

last(/server/temp)<=15

Использовать макрос {TRIGGER.VALUE} в выражении восстановления нецелесообразно, поскольку это выражение вычисляется только тогда, когда триггер находится в состоянии "Проблема". Следовательно, при вычислении выражения {TRIGGER.VALUE} всегда будет принимать значение "1" (что указывает на состояние "Проблема").