Как контролировать задачи крона и получить электронные письма, когда они не работают?

Спецификация то, что, если нет никакого номера порта на URI, то значение по умолчанию является портом 80.

У меня было приложение Tomcat, которое работало как порт 80, и я был заинтересован, когда Tomcat будет работать как корень (из-за порта 80). Кроме того, я не мог действительно быть уверен в безопасности приложения. Таким образом, я решил делать изменения необходимыми для выполнения этого как другого un-privd порта. Моя проблема, поскольку Ваша - содержание простой URI. Я нашел в сети несколько шагов, которые я должен был сделать, и я был в системе Linux.

Во-первых, перенаправьте порт 80 для портирования 8080 (моя обозначенная альтернатива). Можно легко сделать это путем активации iptables и использования следующих простых директив:

iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -d your_hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -d your_hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080

Я полагаю, что заменил своим IP-адресом и localhost и your_hostname, когда я настроил это.

Затем необходимо внести некоторые изменения в конфигурационном файле Tomcat: (1) изменяют порт коннектора на 8 080 (для этого примера) и порт прокси к 80. Можно затем выполнить кота как некорневого пользователя, все еще иметь простой URI, и все счастливы. Извините, что я не могу помнить определенный XML-файл для изменения здесь.

4
задан 28 January 2011 в 18:27
8 ответов

Я думаю, контролируя системный журнал, было бы самое легкое решение.

Имейте свои системные журналы, передают Вашей системе контроля и затем настраивают предупреждения в Вашей системе контроля.

Я также настроил пользовательских МИБ SNMP в прошлом, которые Вы могли поместить метку времени прошлого раза, когда конкретный cronjob работал. Затем некоторая внешняя система могла контролировать это snmp MIB для метки времени, более старой, чем 24 часа.

4
ответ дан 3 December 2019 в 02:21

Ваше решение осуществимо, но оно заново изобретает некоторые колеса, что Вы, вероятно, не должны.

Во-первых, у Вас должен действительно быть некоторый тип контролирующего сервиса. Я склонен использовать nagios, но там существует тонна. Выберите одну из тех систем и имейте ее, контролируют Вашего демона крона.

Затем запишите плагин, который использует обертки это упомянутый voretaq7. У Вас будет предупреждение, если cronjob перестанет работать и если crond также перестал работать.

Причина я предлагаю это, состоит в том, что у Вас будет весь свой контроль в одном месте. У Вас должен будет в конечном счете быть сайт широкая система контроля, и имеет больше смысла прикладывать Ваши усилия к этому вместо того, чтобы иметь в распоряжении рассеянную серию систем контроля.

3
ответ дан 3 December 2019 в 02:21

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

Другая опция рассмотреть просто переносит Ваши задания крона в сценарий проверки (если задание крона выходит с ошибочным состоянием (! =0), посылают электронное письмо, или генерируют вывод и позволяют крону послать электронное письмо для Вас).

2
ответ дан 3 December 2019 в 02:21

У меня есть имевший дело с подобным требованием:

Скрипт, запущенный кроном, отправляет, он производится к logger команда. регистратор отправляет сообщение системного журнала на средство Local4, которое обрабатывается rsyslog. local4.* затем отправляется удаленному слушателю Системного журнала - в моем случае, экземпляре Splunk. Splunk имеет сохраненный поиск, который запускает предупреждения по электронной почте, если событий не происходит в ожидаемом окне времени. В дополнение к предупреждениям Splunk также дает мне хорошую доступную для поиска историческую временную шкалу событий.

2
ответ дан 3 December 2019 в 02:21

Ваше решение звучит немного более сложным, чем я думаю, что это должно быть.

Запустите с рассмотрения и/или контроля /var/log/cron.log (или везде, где Ваши журналы крона идут). крон делает хорошее задание входа каждой команды, которую это выполняет, наряду с ошибками. Если Вы хотите знать то, что произошло, это - место для взгляда. Если Вы волнуетесь по поводу смерти крона, можно установить cron'ed heartbeat, который просто регистрируется каждые 5 минут, и если Вы не видите heartbeat, отправьте своего рода предупреждение. Если Вы действительно чувствуете необходимости во втором инструменте, следящем за кроном существует пакет жемчуга (Schedule::Cron) то, что Вы могли использовать для регулярной проверки heartbeat. Если Вы - то, который волновался о надежности локальной машины, можно также отправить журналы на вторую машину для контроля/обработки/предупреждения/и т.д.

Поочередно, Вы могли просто использовать своего рода инструмент системного мониторинга (SNMP, Nagios, Hobbit/BigSister, и т.д.) для внешнего контроля этого, процесс крона работает. Вы действительно контролируете здоровье своих систем, правильно?

Хотя, если Вы действительно, это волновалось о смерти крона, Вы могли бы хотеть изучить восстановление или замену Вашей машины. крон должен быть довольно надежным, и если он перестал работать, это - вероятно, признак большей проблемы.

2
ответ дан 3 December 2019 в 02:21

Вы можете использовать PushMon и создать URL-адрес с расписанием «до 3:30 каждый вторник». Затем выполните эхо-запрос по URL-адресу PushMon, когда ваш скрипт будет успешно выполнен. Если URL-адрес PushMon не вызывается из-за того, что компьютер выключен, или cron не удалось запустить (такое случается), или ваш скрипт не работает, PushMon предупредит вас к 3:30 утра. Вы можете получать уведомления по электронной почте, SMS, телефону, мгновенным сообщениям или Twitter, и эта услуга бесплатна.

Заявление об ограничении ответственности: я связан с PushMon.

2
ответ дан 3 December 2019 в 02:21

Я создал простой инструмент для этого типа мониторинга - https://cronitor.io

Он позволяет вам устанавливать как интервалы (каждые 24 часа), так и длительность (более 10 минут, менее 2 минут и т.д.), а затем получать email/SMS-предупреждения, если ваша задача cron (или любая другая автоматизированная задача) не выполняется в соответствии с правилами, которые вы определили.

Инструмент бесплатен для индивидуальных мониторов, а платные планы доступны для тех, у кого есть несколько потребностей в мониторинге.

.
3
ответ дан 3 December 2019 в 02:21

Попробуйте ] healthchecks.io , это отличное бесплатное решение с открытым исходным кодом. Вы даже можете разместить его, если хотите.

0
ответ дан 3 December 2019 в 02:21

Теги

Похожие вопросы