Cron jobs silent-fail — самая частая причина data loss. Дефолт cron: при ошибке email (если настроен SMTP), иначе ничего. Правильный подход — heartbeat monitoring (dead-man's switch): cron пингует URL после успеха, monitoring сервис ждёт ping и алертит если не получил в ожидаемое время. Решения: Enterno Heartbeat, Healthchecks.io, Cronitor.
Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.
5 2 * * * /usr/bin/backup.sh && curl -fsS PING_URLcurl -fsS PING_URL/fail в error path| Сценарий | Конфиг |
|---|---|
| Simple success ping | 0 3 * * * /usr/local/bin/backup.sh && curl -fsS https://heartbeat.enterno.io/ping/abc123 > /dev/null |
| Ping с измерением duration | 0 3 * * * curl -fsS -m 10 https://heartbeat.enterno.io/start/abc123 &&
/usr/local/bin/backup.sh &&
curl -fsS https://heartbeat.enterno.io/ping/abc123 |
| Fail ping on error | 0 3 * * * /backup.sh || curl -fsS https://heartbeat.enterno.io/fail/abc123 |
| With exit code | 0 3 * * * (/backup.sh; STATUS=$?; curl -fsS https://heartbeat.enterno.io/ping/abc123/$STATUS) |
| Systemd timer alternative | # /etc/systemd/system/backup.service
[Service]
ExecStart=/backup.sh
ExecStartPost=curl -fsS https://heartbeat.enterno.io/ping/abc123 |
Heartbeat-монитор — это «обратный монитор»: не мы опрашиваем сервис, а сервис сам сигнализирует нам, что он жив. Если за установленный интервал сигнал не приходит — мы отправляем тревогу.
Один GET-запрос к уникальному URL — и монитор знает, что задача выполнена.
Задайте допустимое опоздание пинга, чтобы исключить ложные тревоги.
Email и Telegram при пропуске пинга. Повторная тревога, если молчание продолжается.
Полный журнал пингов с временными метками — видите каждое выполнение задачи.
мониторинг cron-задач
контроль фоновых воркеров
dead man's switch
мониторинг платёжных очередей
curl -s https://enterno.io/api/heartbeat/TOKEN — просто и надёжно.Heartbeat-монитор: бесплатно 5 задач, алерты в Telegram и на email при пропуске.
Зарегистрироваться (FREE)Часто SMTP не настроен на VPS → email не доходит. Heartbeat активно alertит если cron не запустился вообще (host down, cron daemon stopped).
Healthchecks — open-source + SaaS free tier. Enterno — интегрирован с uptime/SSL/DNS monitoring в одном dashboard, + RU servers.
Same principle: <code>curl PING_URL</code> в postStart/postStop container lifecycle hook. Или sidecar container.
Outbound HTTP обычно разрешён. Если нет — self-hosted Healthchecks на internal network.