Во многих проектах моя команда сталкивалась с проблемами «тихого отказа» некоторых важных компонентов. За кулисами выполняется множество задач, и если что-то выходит из строя (либо из-за ошибок в логике, либо из-за проблем с оборудованием), в большинстве случаев ответственное лицо не уведомляется (или не уведомляется немедленно).
Я знаю о тяжелых инструментах мониторинга, которые могли бы решить некоторые из этих проблем, но они слишком сложны и слишком дороги для нашей команды.
Мне интересно, каковы ваши решения для таких проблем.
Спасибо за ваши ответы. Чтобы быть более точным, я ищу что-то, что соответствует следующим критериям:
надежность - я думаю, что передача решений, таких как MAILTO cron, или выполнение сценариев уведомлений, если сценарий задания возвращает какое-то значение, не полностью надежны (например, есть общие проблемы с сервером). Полностью надежные решения развертываются в отдельной среде.
возможность немедленно предупредить заинтересованное лицо (в некоторых случаях электронные письма нельзя рассматривать как немедленные, лучше использовать SMS). Было бы здорово предотвратить «лавину электронных писем», когда вы каждую минуту получаете электронные письма с одинаковой информацией.
требует как можно меньше знаний о настройке и настройке.
возможность отслеживать и предупреждать, когда выполнение скрипта превышает некоторое время
правила оповещения поддерживаются из одного места.
Я провел небольшое исследование и не смог найти ничего, что соответствовало бы этим критериям. Nagios (или подобные инструменты) близки к тому, чтобы быть достаточно хорошими, но, на мой взгляд, они слишком сложны, не удобны для пользователя, требуют сложной интеграции. Также необходимо нанять кого-то, кто знаком с таким инструментом или потратить много времени на его освоение.
Основная причина, по которой я спрашиваю о таких решениях, заключается в том, что мы разрабатываем в нашей компании-разработчике решение, основанное на интересном подходе, который может удовлетворить такие требования (или большинство из них), и уже довольно хорошо работает в наших проектах. Теперь мы стремимся выпустить его для сообщества и ищем решения, которые могут сделать почти то же самое, чтобы проанализировать преимущества и недостатки нашего подхода и выбрать направление развития. Также приветствуются комментарии о ваших проблемах с существующими решениями и о вещах, которые вы действительно цените.
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 / critical_job || / usr / local / bin / notify «сбой критического задания»
Затем, когда "citical_job" завершится с ненулевым значением, будет запущено "notify". Желательно, чтобы я постарался уловить саму работу и выполнить ее там.
Размещено Переключатель мертвеца Стильные услуги здесь идеально подошли бы. Идея вкратце: вы настраиваете свое задание cron для отправки HTTP-запроса к размещенной службе непосредственно перед завершением задания cron. Сервис отправляет вам оповещение, если он не получает вовремя от задания cron.
Несколько хорошо известных вариантов:
(Полное раскрытие информации - я основатель Healthchecks.io.)