четверг, 12 июня 2014 г.

Прокачиваем простые триггеры zabbix

Я пользовался простыми выражениями в триггерах Zabbix долгое время.

Что то вроде:
{Router24:ifInOctets.vlan48.last(0)}<10000000
и

 {FileServer3:var_disk.last(0)}>90

Они работают, но имеют некоторые проблемы, например
а) Повторные срабатывания 
В случае затяжной проблемы, оповещения будут приходить и приходить.
б) Малоинформативны, т.е. требуют дополнительных усилий для понимания.
Например, диск занят на 90%, может означать что угодно.
Если диск в 10терабайт, то может и не стоит беспокоится.
Если же  там флешка в 256мбайт, то возможно уже поздно и данные потеряны.
Я приводил хороший пример в этой заметке когда в момент сигнализации время уже упущено.



Несколько трюков улучшающих ситуацию

  1. Убираем повторные срабатывания:

    {TRIGGER.VALUE}=0&{Nas1:la1.last(0)}>10
    Сигнализировать есть load average за последние 30минут больше 10, если еще не сигнализировали
  2. Рассчитываем разницу в процентах:

    ({Nas2:sessions.max(10m)}-{Nas2:sessions.last(0)})>{Nas2:sessions.max(10m)}/10
    Сигнализируем если последнее измерение количества сессий упало на 10% в сравнении с максимумом за 10 минут

  3. Усредняем измерения:

    Вместо last() который может резко изменятся используем max(2h) максимум за два часа или min(#5) минимум из последних 5 измерений.

Нахожу полезными такие мелочи.