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.io | StillOnline |
|---|---|---|
| Направление | Задача push-ит на монитор | Монитор GET-ит ваш URL |
| Пропущенный запуск | Нативный grace period | Нет нативного missed-ping — URL должен уйти в non-200 или stale-логика в /health |
| Страница статуса для клиентов | Не ядро продукта | Встроенная публичная timeline |
| Лучший fit | Cron, 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-heartbeat → 200 только если свежо — гайд cron heartbeat |
Stale /health | 503, когда now - last_cron_ok > threshold |
| Два инструмента | Healthchecks.io для тишины batch; StillOnline для клиентского API uptime |
Для queue workers без публичного порта — proxy heartbeat в публичный /health (workers и очереди).
Настройка side-by-side (типичный indie stack)
Healthchecks.io
- Создайте check с period + grace.
- Добавьте
curlping в cron или в конец скрипта задачи. - Алерты на email или Slack.
StillOnline
- Создайте проект.
- HTTP-проверка на production
/health, GET, 200. - Поделитесь URL страницы статуса; включите Telegram в настройках.
Pro ($9/мес) на StillOnline — до 10 URL, например разделить API и cron heartbeat URL без замены grace-семантики Healthchecks.io.
Честные ограничения
| Ограничение | Healthchecks.io | StillOnline |
|---|---|---|
| Sub-minute cron SLA | Сильно | Слабо — интервал 5 мин по умолчанию |
| Публичный нарратив аварии | Слабо | Сильно |
| Пассивное «ping не пришёл» | Сильно | Не нативно |
| Внешний API liveness | Косвенно | Сильно |
Многие команды держат оба: Healthchecks.io для тишины nightly billing cron; StillOnline для https://api.product.com/health и клиентской страницы статуса.
Связанные материалы
- Heartbeat для cron в SaaS
- Uptime-проверки API-only SaaS
- Мониторинг фоновых workers и очередей
- Дизайн health endpoint
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 маршрут на вашем домене.