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

Оптимальная конфигурация триггера «Загрузка процессора слишком высока» в Zabbix

Контролирую ок. 10 серверов Linux с 4 ядрами ЦП каждый с Zabbix.
В последнее время я получал много ложных срабатываний триггера «Загрузка процессора слишком высока».
Выражение триггера «Слишком высокая загрузка процессора» было:

{Template OS Linux:system.cpu.load[percpu,avg1].avg(5m)}>5 

что по умолчанию.

Затем я поднял 5 до 12, чтобы получать меньше сигналов тревоги, но почему-то подумал, что это не лучший способ справиться с этим. Поэтому я немного погуглил и построил новый триггер.

{Template OS Linux:system.cpu.util[,user].max(5m)}>75

Я бы спросил у сообщества:

  1. Будет ли новое выражение лучше отражать РЕАЛЬНУЮ перегрузку процессора, чем исходное?
  2. Вы бы сделали это как-то иначе / лучше / оптимальнее?
  3. Как бы вы составили выражение, которое будет делать это:
    Триггер сработает, если:

    • Среднее количество процессов, ожидающих в очереди на каждый ЦП за 5 мин, будет более 3
      И
    • максимальная загрузка ЦП за последние 5 минут будет выше 75%

Я следил за примерами в какая-то статья и попробовал с

({Template OS Linux:system.cpu.load[percpu,avg1].avg(5m)}>3
&
{Template OS Linux:system.cpu.util[,user].max(5m)}>75)

но я потерпел неудачу.
Zabbix сервер вернул ошибку:
Неправильное выражение триггера. Проверьте часть выражения, начинающуюся с "& {Шаблон ОС Linux: system.cpu.util [, пользователь] .max (5m)}> 75)".
Поскольку я (пока что) не высококвалифицированный эксперт по Zabbix, мои комментарии будут очень благодарны. Спасибо.

Почему в вашем случае ложная тревога "Слишком высокая загрузка процессора"? Для меня это настоящий симптом - переполнен CPU.

ИМХО: использовать только

{Template OS Linux:system.cpu.load[percpu,avg1].avg(5m)}>5 

но порог зависит от вашего сервера - что и как он делает. Но значение> 5 мне подозрительно. Пример: загрузка ЦП может быть низкой, но загрузка ЦП высокой - в этом случае это может быть признаком «медленных» операций ввода-вывода с диском (вам нужно будет проверить показатели использования CPU iowait, длины дисковой очереди, ...). Ваше новое комбинированное выражение триггера не учитывает этот случай.

Я рекомендую статью об использовании / насыщении от старшего архитектора производительности в Netflix: http://www.brendangregg.com/usemethod.html

Я бы предложил примерно следующее:

{Template OS Linux:system.cpu.load[percpu,avg15].avg(15m)}>1.8

Цель в том, что вы хотите более медленное время отклика на ваши будильники вместо повышения до более высокого порога. Часто всплеск активности, который исчезает через 5 или 10 минут, на самом деле не является большой проблемой, может быть совершенно нормальным в зависимости от того, что вы там делаете. Однако, если тяжелая нагрузка сохраняется в течение значительного периода времени, вам следует знать об этом. Увеличьте или уменьшите этот порог на 1,8 в зависимости от того, как будет выглядеть ваша типичная рабочая нагрузка.

С точки зрения вашего выражения здесь:

{Template OS Linux:system.cpu.util[,user].max(5m)}>75

Я бы не рекомендовал использовать функцию max () в этом контексте, потому что она будет чувствительна даже к кратковременному всплеску высокой активности ... если только вы этого не хотите, но тогда не жалуйтесь на получение большого количества предупреждений.

Наконец, да, вы можете использовать логические выражения, и здесь есть страница документации, которая вам поможет. Проверь это:

https://www.zabbix.com/documentation/3.2/manual/config/triggers/expression#operators