Назад | Перейти на главную страницу

Триггер Zabbix не работает для функции подсчета

Я пытаюсь выдать предупреждение, если сервер опускается ниже порогового значения для свободной памяти x количество раз в день.

{my_template:vm.memory.size[free].count(1m,5G,lt,1d)}>5
{my_template:vm.memory.size[free].count(1m,5368709120,lt,1d)}>5

Я также пробовал это, когда свободная память составляет 9 ГБ ... но не удалось.

{my_template:vm.memory.size[free].count(1m,5G,gt,1d)}>5

Документация Zabbix для функции подсчета указывает следующие параметры:

count (sec | #num ,,,)

Что касается time_shift, здесь более подробно объясняется, что он делает.

Некоторые функции поддерживают дополнительный второй параметр time_shift. Этот параметр позволяет ссылаться на данные за определенный период времени в прошлом. Например, avg (1h, 1d) вернет среднее значение за час день назад.

В ваших примерах в первом аргументе используется 1m, что означает, что они смотрят только на период времени в одну минуту, а, сдвигая его на 1d, вы смотрите на период времени в 1 минуту, ровно 24 часа назад. Это не похоже на то, что вы хотите смотреть.

Кажется, вы правильно используете второй и третий параметры, а также оператор вне функции.

Чтобы получить триггер, как вы его описали, я бы отказался от time_shift и установил для первого параметра значение 1d.

Вероятно, это ближе к тому, что вы описываете:

{my_template:vm.memory.size[free].count(1d,5368709120,lt)}>5

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

В этом примере ниже Zabbix перечисляет данные, собранные для памяти за последние 24 часа. Поскольку интервал установлен на 30 секунд, это дает 2880 точек данных.

Когда вы говорите, что хотите, чтобы триггер сработал после того, как функция count вернет> 5, это означает, что он сработает, когда критерию соответствует более 5/2880 точек данных.

Это может быть> 5 пунктов в течение дня или> 5 пунктов подряд, что означает, что это произошло один раз в течение 2,5 минут.

Возможно, лучше было бы создать новый вычисляемый элемент. Назовем это «провалом памяти на 5 минут». Я дам ему ключ "foo.bar.free.memory.low". Он мог бы использовать эту формулу:

max(vm.memory.size[free], 5m)<5368709120

Он будет хранить 1, если максимальное значение свободной памяти за последние 5 минут было ниже 5G, в противном случае - 0.

Затем создайте триггер на основе этого нового элемента:

{my_template:foo.bar.free.memory.low.count(1d,0,gt)}>5

Этот триггер срабатывает, если за последний день было> 5 таких провалов.

Этот метод действительно должен сократить количество ложных срабатываний и более надежно подсчитывать настоящий провалы памяти.