Steadrun следит за фоновыми задачами: cron, очередями и воркерами. Ещё он умеет проверять сайты и SSL-сертификаты. Если задача перестала выполняться, Steadrun напишет Вам в Telegram или на почту, как только выйдет запас времени, который Вы ей дали.
Зачем это нужно
Пример из жизни. Ночной бэкап базы исправно работал год. Потом на сервере сменили пароль от базы, и скрипт стал падать на первой же строке. Ошибка писалась в лог, лог никто не читал. Через месяц бэкап понадобился, и оказалось, что свежих копий нет уже тридцать дней.
Похожие истории случаются с любыми фоновыми задачами:
- воркер очереди упал из-за нехватки памяти, письма клиентам копятся и не уходят;
- сервер переезжал, crontab забыли перенести, и выгрузка в 1С больше не запускается;
- задача ждёт ответа от внешнего API, который завис, и не может завершиться третьи сутки;
- cron на сервере работает в UTC, и задача запускается на три часа раньше, чем Вы думаете.
Ни в одном из этих случаев никто не получает ошибку. Задача просто не делает свою работу, и заметить это можно, только если специально проверять.
Как это работает
Steadrun устроен по принципу dead man's switch. Так называют механизм, который срабатывает, когда человек перестаёт подавать сигнал: например, рукоятка бдительности у машиниста поезда. У нас всё то же самое:
- Вы создаёте проверку (check) и указываете, как часто должна выполняться задача. Например, каждый день в 03:00.
- Steadrun выдаёт адрес вида
https://steadrun.ru/ping/…. - В конце задачи Вы добавляете запрос на этот адрес. Такой запрос мы называем пингом, он значит «задача отработала».
- Если пинг не пришёл вовремя, Steadrun присылает алерт. Когда задача снова отработает, придёт сообщение, что всё восстановилось.
Доступ к Вашему серверу, коду или базе Steadrun не нужен, он только принимает пинги. Поэтому подключить его
можно на любом языке и любом хостинге: хватит одной строки с curl.
Что можно отслеживать
| Что | Как работает | Пример |
|---|---|---|
| Cron-задачи | Ждём пинг по расписанию из cron-выражения | Бэкап в 03:00, выгрузка каждые 15 минут |
| Очереди и воркеры | Ждём пинг не реже заданного интервала (heartbeat) | Воркер отправки писем пингует раз в минуту |
| Сайты (HTTP) | Сами открываем адрес, проверяем код ответа и текст на странице | Главная интернет-магазина, /health у API |
| SSL-сертификаты | Проверяем, что сертификат доступен и не истекает | Предупреждение за 14 дней до окончания |
Если у Вас Laravel, есть пакет steadrun/laravel-monitor. Он отправляет пинги из задач Scheduler, сообщает о
failed jobs и проверяет, что очередь на самом деле обрабатывает задания.
Что ещё есть в Steadrun:
- Статус-страницы. Публичная страница для Ваших клиентов: что работает, что нет, какие идут работы. Посетители могут подписаться на уведомления.
- Команда. Один аккаунт на несколько человек, алерты получают все участники.
- API. Можно создавать проверки и менять статус компонентов из CI и своих скриптов.
Лимиты и цены — на странице тарифов. Бесплатно доступно 5 проверок, карту привязывать не нужно.
Чем это отличается от логов и uptime-мониторинга
Логи помогают разобраться, что пошло не так. Но сначала нужно узнать, что что-то сломалось, и тут логи не помогут: сами они ничего не сообщают. Steadrun присылает алерт, а причину Вы ищете в логах. Кстати, текст ошибки можно передать вместе с пингом, тогда он придёт прямо в алерте.
Uptime-мониторинг открывает Ваш сайт снаружи и проверяет, что он отвечает. Steadrun это тоже умеет. Но снаружи не видно, что происходит внутри. Сайт может нормально открываться, а заказы при этом третий день не выгружаются в 1С. Чтобы узнать о таком, нужен пинг от самой задачи.
С чего начать
Откройте быстрый старт. Там за пять минут Вы создадите первую проверку, отправите пинг и проверите, что алерт приходит в Telegram.
Дальше по порядку:
- Как это работает — когда Steadrun ждёт пинг, когда приходит алерт, напоминания и пауза;
- Типы проверок — что выбрать и как заполнить форму;
- Рецепты — готовые примеры для crontab, systemd, Docker, CI, Python, Node.js и PHP;
- Laravel — пакет для Scheduler и очередей;
- Алерты — Telegram, почта и алерты команде;
- Решение проблем — если пинг не доходит или алерт пришёл зря;
- Статус-страницы — публичная страница для Ваших клиентов;
- API — создание проверок и пауза из скриптов.