Существуют ли хорошие методы для мониторинга задач cron в кластере?
Мы начинаем использовать cron для ежедневного запуска задач. Несколько идей для проверки информации:
- Добавьте специальную обработку приложения, которая регистрирует информацию в каком-то «сетевом» месте, например, в БД
- Создайте систему файлов журналов, которая периодически передает журнал cron в центральную точку для обработки / запроса (наряду с другими возможными файлами журналов)
Мне интересно, были ли у людей успехи в том, что они делали вещи отдельно для cron по сравнению с другими вещами, или же задачи были полностью интегрированы в другой подход. Я склоняюсь к # 2, но я хотел бы знать, что могут попробовать более опытные люди.
monitoring
cron
Тристан Юричек
источник
источник
Ответы:
В дополнение к другим ответам:
Мы используем первое, чтобы упростить проверку Nagios ( Icinga ), например, если последняя записанная метка времени старше n часов (плюс любая логика, которая вам нужна) - мы знаем, что что-то пошло не так.
источник
Мой общий подход таков:
источник
/dev/null
крайней мере,|| echo "service $service is FUBAR"
чтобы добавить к командной строке ...В дополнение к вышесказанному:
источник
Есть несколько методов, которые вы можете использовать для мониторинга cronjobs.
Чтобы получать уведомления о сбоях cronjob:
Система, которую вы предлагаете для регистрации информации в «сетевом» месте, звучит как системный журнал . Системный журнал предоставляет простой метод для создания журналов, он обычно управляет файлами, такими как / var / log / messages. Вы можете сделать основные настройки, такие как выбор файлов, которые получают сообщения журнала.
Системный журнал может быть запущен в режиме сетевой осведомленности. Например, вы можете настроить его так, чтобы подчиненный мог регистрироваться на главном сервере:
Для дистрибутива на основе Red Hat пример конфигурации выглядит следующим образом:
(Первая строка конфигурации перенаправляет уведомления журнала local1. * На @ 192.168.1.3 ("master"). Вторая опция -r строки SYSLOGD_OPIONS включает поддержку сети. Наконец, третья строка конфигурации направляет сообщения local1. *, Полученные на "master". в файл).
Подход системного журнала лучше только для регистрации ошибок / информации. Файлы журнала имеют меньшую видимость, чем электронная почта, поэтому вы, вероятно, не будете просматривать журналы, если что-то не так.
Если вы решите пойти по пути стиля syslog, также рассмотрите syslog-ng: http://freshmeat.net/projects/syslog-ng/ .
Конечно, вы можете получить лучшее из обоих методов, используя оба. Например, syslog'ing как неудачи и успехи, так и просто рассылка сообщений о сбоях.
источник
Я опубликовал аналогичный ответ на вопрос в StackOverflow ( /programming/21025495/system-for-monitoring-cron-jobs-and-automated-tasks )
Cronitor ( https://cronitor.io ) был инструментом, который я создал именно для этой цели. Это в основном сводится к тому, чтобы быть маяком для отслеживания, который использует http-запросы в качестве пингов.
Тем не менее, одна из потребностей, о которых ОП упоминает в своем комментарии, заключается в необходимости информирования о том, что работа начинает выполняться слишком долго.
У меня была такая же потребность, и я обнаружил, что подобные инструменты не всегда поддерживают этот тип мониторинга. Cronitor решает эту проблему, позволяя вам при необходимости запускать начальное и конечное события, чтобы отслеживать длительность.
Отслеживание продолжительности было обязательным для меня, потому что у меня был cronjob, который был намечен каждый час, но со временем начал работать более часа. Надеюсь, вы найдете ее полезной!
источник
На момент написания этой статьи он все еще находился в стадии разработки, но я рекомендую взглянуть на https://github.com/jamesrwhite/minicron . Он был разработан для решения проблем, которые вы описываете. С небольшим изменением команды, которую вы запускаете, она может записывать состояние вывода и завершения заданий и отправлять эти данные обратно на центральный сервер в режиме реального времени, а также отправлять оповещения по электронной почте, SMS и PagerDuty в случае сбоя задания (состояние выхода> 0). или не выполняется, когда это должно.
Отказ от ответственности: я разработчик, работающий над этим.
источник
Это похоже на классический вариант использования AlertGrid .
Он не требует установки, все, что вам нужно сделать, чтобы воспользоваться преимуществами этого инструмента, это:
execution_time
!если my_job не ответил в течение X минут (в вашем случае, часов) -> отправить SMS администратору
или
Если время выполнения> 60 секунд -> отправить письмо заинтересованным лицам
На самом деле это все. Вы можете управлять правилами уведомлений, используя приятный визуальный редактор. Вам не нужно изменять исходный код или некоторые файлы конфигурации, если что-то изменилось. Это централизованное решение, поэтому вы можете извлечь выгоду из управления правилами из одного места.
Надеюсь, это кому-нибудь поможет. Существует бесплатная учетная запись, поэтому вы можете протестировать и использовать AlertGrid, если вы заинтересованы. Я один из членов команды AlertGrid - не стесняйтесь спрашивать, если у вас есть какие-либо вопросы.
источник
Ваши задания cron уже зарегистрированы через системный журнал. Эти данные могут быть отправлены на центральный сервер с помощью syslogd, другого стандартного сервиса.
http://www.debuntu.org/how-to-remote-syslog-logging-on-debian-and-ubuntu/ содержит подробную информацию о том, как это настроить.
источник
я использую http://cronrat.com просто добавляю && curl "... ваш cronrat url" к вашей работе cron. Лучшая функция, которая мне нравится, это то, что вам не нужно ничего настраивать после создания первоначального аккаунта. Каждое предупреждение активируется в ту минуту, когда вы его используете. поэтому я могу использовать любые автоматизированные инструменты для запуска моих работ, которых еще нет, в отличие от некоторых служб, где мне нужно сначала настроить работу.
источник
Я создал Power Cron после этих точных потребностей. Мне нужен был централизованный взгляд на мои задания cron и понятие зависимости между заданиями разных членов кластера.
Мне также нужно было больше информации, чем я мог найти в журналах, и добавил профилирование работы.
источник
Для этого мы создали PushMon, http://www.pushmon.com . Скажем, ваша ежедневная работа начинается в 3 часа ночи и обычно заканчивается в 4 часа утра. Вы можете настроить расписание PushMon «до 4:00 утра каждый день». Или немного более продвинутый график, например, «до 4:00 утра каждый день в течение 1 часа». Все, что вам нужно сделать, это «пинговать» URL-адрес PushMon при каждом запуске задания, и оно будет предупреждать вас о пропущенных пингах. Если вы точно знаете, что произошла ошибка, например, когда вы перехватываете исключение, которое не можете обработать, вы можете использовать функцию оповещения по требованию.
источник
Healthchecks ( https://github.com/healthchecks/healthchecks/ ) - это сервис и панель инструментов, созданная специально для мониторинга заданий cron. Он используется в производстве, поддерживается и принимает вклады кода.
Он работает так же, как Cronitor, Dead Man's Snitch и его друзья: вы настраиваете свою задачу cron для отправки запроса HTTP / HTTPS на специальный уникальный URL-адрес непосредственно перед его завершением. Healthchecks получает и регистрирует эти пинги. Он постоянно проверяет, поступают ли эхо-запросы с ожидаемыми интервалами. Когда он обнаруживает проблему, он отправляет вам уведомление. Поддерживаемые методы уведомления: электронная почта, веб-хуки, провал, Telegram, Discord, SMS, Pushover, Pusbullet, PagerDuty, PagerTree, HipChat, VictorOps, OpsGenie.
Вы можете настроить все это и разместить себя самостоятельно, но, как и с любым веб-сервисом, требуются некоторые усилия для настройки доменного имени, сертификата, настройки обратного прокси-сервера HTTP, настройки резервного копирования базы данных и т. Д. Достаточно простой способ получить работает, чтобы использовать эту адаптированную Heroku версию: https://github.com/iphoting/healthchecks . Я знаю людей, которые сами запускают этот проект и используют его для мониторинга сотен сервисов.
Отказ от ответственности: я автор, и я также запускаю Healthchecks как размещенный сервис на https://healthchecks.io
источник