Сначала краткое объяснение:
Используя Zabbix для мониторинга системы, я пытаюсь понять, можно ли / как его использовать для запуска важной запланированной задачи, для которой мне нужно сообщить значение ОК / ПРОБЛЕМА (например, по электронной почте).
Я уже использую написанный на заказ скрипт, называемый cron
, чтобы сообщить об ошибках при выполнении программы. Однако такой подход чреват «наводнением» быстро повторяющейся, но не выполняющейся запланированной задачей. На самом деле я хочу, чтобы меня уведомляли об «смене края», то есть: от нормального (ОК) до неудачного (ПРОБЛЕМА) выполнения и наоборот.
Отсюда у меня возникла идея попробовать Monit - и он работает очень хорошо. Однако, поскольку Zabbix уже развернут, я бы не хотел использовать другие инструменты. если Я могу достичь своей цели, используя существующую настройку.
Хорошо, вернемся к основной проблеме:
Исходя из моих исследований / тестов, основной подход заключается в том, чтобы рассматривать задачу, которая должна быть выполнена, как повторяющуюся проверку / запрос данных. Существуют две возможности:
Первый подход требует входа в систему для каждого выполнения команды, что имеет тенденцию «загрязнять» журналы ненужными записями, поэтому я предпочитаю второй подход. Тем не менее, обе у методов есть серьезная проблема: они захватывают только вывод команды, не захватывает значение выхода команды
Итак, мои вопросы:
В общем, Zabbix не является планировщиком задач - Rundeck, Ansible / AWX или другое решение может подойти лучше. Тем не менее, для этого все еще можно использовать Zabbix, особенно если это разовая задача.
Решением вашей проблемы с кодом выхода является использование сценария-оболочки. Сделайте этот сценарий вывода, код выхода и все, что вам нужно (возможно, время, необходимое для выполнения вашей команды). Затем этот скрипт может отправлять все эти значения в элементы траппера Zabbix, о которых вы можете предупреждать.
Имейте в виду, что длительные задачи не должны выполняться напрямую как параметры пользователя Zabbix. Если ваша команда может работать дольше пары секунд, выполните ее с atd
или аналогичный подход вместо этого.
Таймауты по умолчанию:
Максимум 30 секунд, но вам действительно, действительно, не следует увеличивать значения по умолчанию.