Как вы отслеживаете и реагируете, когда не удается выполнить запланированное задание? - общий вопрос
Во многих проектах моя команда сталкивалась с проблемами "тихих сбоев" некоторых важных компонентов. За кулисами выполняется много задач, и если что-то не получается (из-за ошибок в логике или из-за проблем с оборудованием), в большинстве случаев ответственное лицо не уведомляется (или не уведомляется немедленно).
Я знаю об инструментах контроля тяжеловесов, которые могут решить некоторые из этих проблем, но они слишком сложны и слишком дороги для нашей команды.
Мне интересно, каковы ваши решения для таких проблем.
Спасибо за ваши ответы до сих пор. Чтобы быть более точным, я ищу что-то, что соответствует следующим критериям:
надежность - я думаю, что передача таких решений, как MAILTO cron или выполнение сценариев уведомлений, если сценарий задания возвращает какое-либо значение, не является полностью надежным (например, существуют общие проблемы с сервером). Полностью надежные решения развернуты в отдельной среде.
возможность немедленного оповещения заинтересованного лица (в некоторых случаях электронные письма не могут рассматриваться как немедленные, SMS будет намного лучше). Было бы здорово предотвратить "лавинную рассылку", когда вы каждую минуту получаете электронное письмо с той же информацией.
требует как можно меньше знаний о настройке и настройке.
возможность отслеживать и предупреждать, когда выполнение скрипта превышает некоторое время
правила оповещения поддерживаются из одного места.
Я провел некоторое исследование и не смог найти ничего, что соответствовало бы этим критериям. Nagios (или аналогичные инструменты) близки к тому, чтобы быть достаточно хорошими, но, на мой взгляд, они сложны, не удобны для пользователя, требуют сложной интеграции. Также необходимо нанять кого-то, кто знаком с таким инструментом, или потратить много времени на его освоение.
Основная причина, по которой я спрашиваю о таких решениях, заключается в том, что мы разрабатываем в нашей компании-разработчике решения, основанные на интересном подходе, который может удовлетворить такие требования (или большинство из них), и уже он довольно хорошо работает в наших проектах. Сейчас мы стремимся выпустить его для сообщества, и мы ищем некоторые решения, которые могут сделать почти то же самое, чтобы провести анализ преимуществ и недостатков нашего подхода и выбрать направление развития. Также приветствуются комментарии о ваших проблемах с существующими решениями и вещах, которые вы действительно цените.
4 ответа
Nagios с пассивными проверками, а затем оберните запланированные задания, чтобы отправить сообщение (send_nsca) на сервер nagios, указывающее, что произошло после их завершения. Если ошибки в работе, тогда nagios предупредит.
Более важная проблема, с которой вы сталкиваетесь, заключается в том, что вы также можете настроить nagios на оповещение, если оно слишком долго не получало ответа от вашего задания cron, так что вы можете обнаружить задания, которые молча терпят неудачу.
Все бесплатно и довольно тривиально для настройки.
Проверьте https://cronitor.io/ - вы можете бесплатно отслеживать одну работу cron. Когда ваши задания запускаются, они пингуют Cronitor, и если Cronitor не пингуется в нужное время, он отправит вам предупреждение.
Если вы считаете, что более масштабное решение для мониторинга не подходит для вашей ситуации, вы можете рассмотреть возможность пересылки электронной почты администратора с сервера на чью-либо действительную учетную запись электронной почты. Вы можете сделать это, добавив следующую строку в / etc / aliases:
root: user@example.com
Где user@example.com - это чей-то фактический адрес электронной почты.
Помните, что вашему серверу понадобится работающий адаптер MTA для отправки электронной почты, и если будут какие-либо условия, препятствующие отправке электронной почты системой (например, потеря сети / отсутствие места на / var), никто не будет уведомлен.
Вы можете изменить запись команды в crontab на что-то вроде
/ usr / local / bin / критический_job || /usr/local/bin/notify "критическое задание не выполнено"
Затем, когда "citical_job" выходит с ненулевым значением, запускается "notify". Предпочтительно, я приложу все усилия, чтобы поймать это на самой работе и справиться с этим там.
Хостинг-сервисы "Переключатель мертвецов" идеально подошли бы здесь. Идея в двух словах: вы настраиваете свое задание cron на отправку HTTP-запроса к размещенной службе непосредственно перед завершением задания cron. Служба отправляет вам оповещения всякий раз, когда не получает вовремя задание cron.
- надежность: размещенный сервис работает в другой инфраструктуре, чем ваша работа cron. Для действительно критически важных вещей вы можете пропинговать несколько сервисов.
- СМС уведомления - это общая черта
- минимальная настройка или обслуживание, как с любым SaaS
- обычно вы можете настроить, насколько "поздним" будет выполнение заданий cron, прежде чем вы получите предупреждение
- размещенный сервис предоставит информационную панель со всеми зарегистрированными заданиями cron, их расписаниями, текущим состоянием, ожидаемым временем выполнения и т. д.
Несколько хорошо известных вариантов:
- https://healthchecks.io/. Запущен в 2015 году. Мониторинг 20 рабочих мест бесплатно.
- https://cronitor.io/. Запущен в 2015 году. Мониторинг 1 вакансии бесплатно.
- Мертвец Снитч. Запущен в 2013 году. Монитор 1 работа бесплатно.
(Полное раскрытие - я основатель Healthchecks.io.)