Задания Cron терпят неудачу незаметно. Сценарий резервного копирования перестает работать после перемещения сервера, смена пароля нарушает ночной импорт или переполненный диск приводит к сбою задания по выставлению счета в 3 часа ночи. Ничего не отключается, поэтому обычный монитор работоспособности остается зеленым, и вы узнаете об этом только через несколько недель, когда вам понадобится резервная копия или клиент спросит, где находится его счет. Мониторинг сердцебиения закрывает этот пробел. В этом руководстве показано, как оно работает и как его бесплатно настроить за несколько минут.
Что такое мониторинг сердцебиения?
Обычный монитор работоспособности проверяет ваш сайт снаружи. Монитор пульса работает наоборот: ваше запланированное задание регистрируется. Вы получаете уникальный URL-адрес, и ваше задание вызывает его каждый раз, когда оно завершается. Если звонок не поступит вовремя, монитор поймет, что что-то пошло не так, и предупредит вас.
Это сразу улавливает все виды молчаливых сбоев:
- Работа так и не началась. Запись
crontabбыла потеряна, сервер перезагрузился без планировщика или контейнер был заменен. - Работа провалилась. Ошибка остановила выполнение сценария до того, как он достиг конца.
- Работа зависает. Он начался, но завис в заблокированной базе данных или медленном API и никогда не завершается.
- Весь сервер пропал. Нет сервера, нет пинга, поэтому вы слышите об этом, даже если никто больше не смотрит.
Какие запланированные задачи следует отслеживать?
Начните с работ, которые обходятся вам больше всего, когда они прекращаются незаметно:
- Резервные копии баз данных и файлов. Резервная копия, которую вы никогда не проверяете, — это резервная копия, которой у вас может не быть.
- Скрипты выставления счетов и счетов, продление подписки и сверка платежей.
- Импорт и синхронизация данных между вашим магазином, вашей CRM, вашим складом или каналом поставщика.
- Очереди электронной почты и информационные бюллетени, отправляемые запланированным работником.
- Задания по обновлению сертификатов, такие как автоматическое продление SSL и задания по очистке, которые препятствуют заполнению диска.
- WordPress или приложение cron, которое публикует запланированные публикации и выполняет задачи обслуживания.
Бесплатный план включает в себя 5 мониторов сердечного ритма, которых достаточно для покрытия критически важных задач типичного малого бизнеса или нескольких клиентских сайтов.
Как настроить бесплатный мониторинг заданий cron
1. Создайте бесплатную учетную запись
Зарегистрируйтесь в My Site Alerts, указав свой адрес электронной почты. Нет кредитной карты и нет пробного периода.
2. Создайте сердцебиение
Откройте Heartbeats на панели управления и выберите «Создать Heartbeat». Дайте ему четкое имя, например «Ночное резервное копирование базы данных», чтобы предупреждение точно сообщало вам, что не удалось.
3. Установите ожидаемый график и льготный период.
В поле Ожидать тактового сигнала каждые укажите частоту выполнения задания: каждые 15 минут, каждый час, один раз в день. Затем установите период отсрочки примерно равный тому, сколько времени потребуется для выполнения задания, плюс запас прочности. Для резервного копирования, которое запускается в 14:00 и обычно занимает 20 минут, требуется льготный период примерно 30–40 минут, чтобы медленная ночь не вызвала ложную тревогу.
4. Скопируйте URL-адрес вашего пульса.
У каждого сердцебиения есть свой секретный URL-адрес. Ваше задание отправляет ему запрос GET или POST при каждом запуске. Вы также можете один раз открыть URL-адрес в браузере, чтобы проверить его: пульс должен увеличиться.
5. Выберите, куда отправлять оповещения
Электронная почта работает «из коробки». Вы также можете отправлять оповещения в Slack, Discord, Telegram, Microsoft Teams или в свой собственный вебхук, чтобы пропущенный запуск достигал того места, куда вы на самом деле смотрите.
Как пропинговать сердцебиение с работы
crontab Linux
Добавьте запрос после вашей команды, объединенный с помощью &&, чтобы пинг отправлялся только в случае успешного выполнения задания:
0 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://mysitealerts.com/webhook-heartbeat/YOUR-CODE Опция -m 10 предотвращает зависание Curl, если сеть медленная, а --retry 3 устраняет кратковременные сбои в соединении. Если на вашем сервере используется wget вместо Curl, wget -q -O /dev/null за которым следует URL-адрес, выполняет ту же работу.
Внутри скрипта
Поместите пинг в последнюю строку скрипта после того, как основная работа будет завершена. В сценарии оболочки добавьте set -e вверху, чтобы любая неудачная команда останавливала сценарий до того, как он достигнет ping. В Python, PHP или Node.js на последнем этапе работы выполните простой HTTP-запрос к URL-адресу контрольного сигнала.
Панели управления хостингом
На общем хостинге добавьте ту же команду Curl в конец задания cron на панели управления. Большинство панелей позволяют вставлять полную командную строку, поэтому и здесь работает тот же шаблон &&.
WordPress cron
WordPress запускает запланированные задачи только тогда, когда кто-то посещает сайт. Для надежного планирования отключите встроенный триггер, вызовите wp-cron.php из реального задания cron сервера и добавьте пинг в ту же строку. Теперь вы знаете, что расписание срабатывает и завершается.
Распространенные ошибки, приводящие к ложным срабатываниям (или их пропуску)
- Пинг в начале работы. Это только доказывает, что работа началась. Пинг в конце, после того, как работа увенчалась успехом.
- Слишком короткий льготный период. Рабочие места становятся медленнее по мере роста данных. Пересматривайте льготный период каждые несколько месяцев.
- Игнорирование часовых поясов. Если часы сервера и ваше расписание не совпадают, ежедневная работа может выглядеть на час позже. Установите ожидаемый интервал, а не время на настенных часах, и позвольте первому запуску запустить таймер.
- Пинг слишком часто. Heartbeats предназначены для заданий, которые выполняются не чаще одного раза в минуту; дополнительные пинги в течение той же минуты игнорируются.
- Разделение одного удара сердца между работами. Каждому заданию нужен собственный URL-адрес, иначе одно исправное задание скроет другое остановленное.
- Забывание сделать паузу во время обслуживания. Приостановите контрольный сигнал во время миграции сервера, чтобы в истории отображались только реальные инциденты.
Heartbeats лучше всего работает рядом с проверками работоспособности
Heartbeats сообщает вам, что работа над вашим сайтом идет; проверки работоспособности показывают, что посетители могут добраться до него. Вместе они покрывают обе половины. Если вы еще не настроили проверку веб-сайта, следуйте нашему руководству о том , как бесплатно отслеживать время безотказной работы веб-сайта, и добавьте SSL и мониторинг истечения срока действия домена, пока вы там. Вы можете проверить любой сертификат прямо сейчас с помощью средства проверки SSL.
Защита самой важной работы занимает около пяти минут. Создайте бесплатную учетную запись, добавьте один пульс для резервной копии и позвольте нам следить за вами, чтобы вам не пришлось этого делать.
Часто задаваемые вопросы
В чем разница между мониторингом cron и мониторингом работоспособности?
Мониторинг работоспособности проверяет URL-адрес извне, чтобы увидеть, отвечает ли ваш сайт. Мониторинг Cron или Heartbeat ожидает регистрации запланированного задания и предупреждает вас, если оно не прибывает вовремя.
Действительно ли мониторинг сердцебиения бесплатен?
Да. Бесплатный план включает в себя 5 мониторов сердечного ритма с электронной почтой, Slack, Discord, Telegram, Microsoft Teams и оповещениями через веб-перехватчик. Нет кредитной карты и пробной версии, которая истекает.
Нужно ли мне устанавливать агент на свой сервер?
Нет. Для вашей работы необходимо выполнить только один HTTP-запрос к URL-адресу контрольного сигнала, например, с помощью Curl или wget, которые доступны практически на каждом сервере.
Каким должен быть льготный период?
Установите обычное время выполнения задания плюс запас прочности. Работа, которая обычно занимает 10 минут, хорошо выполняется с помощью льготного периода в 15–20 минут.
Могу ли я отслеживать задания, которые выполняются один раз в день или раз в неделю?
Да. Установите ожидаемый интервал в расписании задания, например 1 день или 7 дней, и вы получите предупреждение, если запуск будет пропущен.