← Блог

Heartbeat Healthchecks.io vs StillOnline

Healthchecks.io и StillOnline помогают indie-командам спать — но оптимизированы под разные типы сбоев. Healthchecks.io ждёт, что cron job push-ит ping при успехе; тишина → алерт «пропущена проверка». StillOnline опрашивает ваши HTTPS URL по расписанию, строит публичную страницу статуса и алертит при сбое HTTP GET.

Ни один не заменяет другой во всём стеке. Честно о пробелах: у StillOnline нет нативной семантики пропущенного ping для cron — а Healthchecks.io не про клиентскую страницу статуса.

Краткий ответ

Документация Healthchecks.io описывает push-мониторинг: каждая задача вызывает уникальный URL при успехе; если ping не пришёл в grace period — email. StillOnline выполняет внешние HTTP GET (по умолчанию каждые пять минут на Free, тарифы) и публикует страницу статуса для клиентов. Healthchecks.io (или аналог) — когда задача должна доказать запуск по жёсткому расписанию без публичного HTTP-сервера. StillOnline — когда интеграторам и пользователям нужен ответ «API доступен?» снаружи сети; cron можно адаптировать через паттерн heartbeat URL.

Push heartbeat vs pull uptime

ИзмерениеHealthchecks.ioStillOnline
НаправлениеЗадача push-ит на мониторМонитор GET-ит ваш URL
Пропущенный запускНативный grace periodНет нативного missed-ping — URL должен уйти в non-200 или stale-логика в /health
Страница статуса для клиентовНе ядро продуктаВстроенная публичная timeline
Лучший fitCron, batch, внутренние скриптыWeb/API HTTPS liveness, B2B-прозрачность
Каналы алертовEmail, Slack и др.Telegram, Slack, email — фокус на владельце

Расписание Healthchecks.io — period и grace на проверку; идеально для «SQL export каждый час». StillOnline спрашивает: «этот публичный URL отдаёт 200 прямо сейчас?»

Когда Healthchecks.io — лучший инструмент

Выбирайте push heartbeat, когда:

  • Задача на worker без inbound HTTP и sidecar URL не нужен.
  • SLA — «должна завершиться каждые N минут», а не «web server отвечает».
  • Режим сбоя — тишина, не 503.
  • Алерты только ops — клиентская страница статуса не нужна.

Пример из их docs: curl -fsS -m 10 --retry 5 https://hc.example.com/unique-uuid в конце cron-скрипта.

Когда StillOnline — лучший инструмент

Выбирайте StillOnline, когда:

  • Потребители API держат страницу статуса рядом с docs.
  • Мониторите GET /health или /api/health для SaaS uptime — гайд API-only.
  • B2B-покупатели спрашивают «где status page?» на procurement.
  • Нужен один dashboard для HTTP-проверок + истории инцидентов + обновлений подписчиков.

StillOnline пишет HTTP-код и latency — не «timestamp последнего ping», пока вы не закодируете это в контракт ответа (дизайн health endpoint).

Мост cron → StillOnline (без нативного missed-ping)

StillOnline активно GET-ит URL; не следит за отсутствием push. Рабочие паттерны:

ПаттернКак
Heartbeat URLЗадача обновляет state; GET /internal/cron-heartbeat200 только если свежо — гайд cron heartbeat
Stale /health503, когда now - last_cron_ok > threshold
Два инструментаHealthchecks.io для тишины batch; StillOnline для клиентского API uptime

Для queue workers без публичного порта — proxy heartbeat в публичный /health (workers и очереди).

Настройка side-by-side (типичный indie stack)

Healthchecks.io

  1. Создайте check с period + grace.
  2. Добавьте curl ping в cron или в конец скрипта задачи.
  3. Алерты на email или Slack.

StillOnline

  1. Создайте проект.
  2. HTTP-проверка на production /health, GET, 200.
  3. Поделитесь URL страницы статуса; включите Telegram в настройках.

Pro ($9/мес) на StillOnline — до 10 URL, например разделить API и cron heartbeat URL без замены grace-семантики Healthchecks.io.

Честные ограничения

ОграничениеHealthchecks.ioStillOnline
Sub-minute cron SLAСильноСлабо — интервал 5 мин по умолчанию
Публичный нарратив аварииСлабоСильно
Пассивное «ping не пришёл»СильноНе нативно
Внешний API livenessКосвенноСильно

Многие команды держат оба: Healthchecks.io для тишины nightly billing cron; StillOnline для https://api.product.com/health и клиентской страницы статуса.

Связанные материалы

FAQ

StillOnline заменяет Healthchecks.io для cron?

Не один к одному. У StillOnline нет нативного монитора пропущенного ping. Cron можно приблизить доступным URL, который уходит в non-200 при зависании задач, или оставить Healthchecks.io для push heartbeat.

StillOnline: тот же ping URL Healthchecks.io можно добавить как проверку?

Ping URL Healthchecks ждёт POST/GET от задачи, а не непрерывный polling. StillOnline GET-ит по фиксированному интервалу — используйте отдельный health или heartbeat маршрут на вашем домене.