Пинг — это обычный HTTP-запрос на адрес проверки. Отправить его можно через curl, wget или из кода на
любом языке. Авторизация не нужна, адрес сам по себе служит ключом.
Адреса проверки
У каждой проверки типа «Cron» и «Очередь» есть три адреса:
| Адрес | Что значит |
|---|---|
https://steadrun.ru/ping/ВАШ-UUID |
Задача отработала успешно |
https://steadrun.ru/ping/ВАШ-UUID/start |
Задача началась |
https://steadrun.ru/ping/ВАШ-UUID/fail |
Задача упала |
Основной адрес есть в карточке проверки, /start и /fail к нему просто дописываются.
Успех переводит проверку в статус «работает» и сдвигает ожидание на следующий запуск. Если проверка была в статусе «не отвечает», придёт сообщение о восстановлении.
/fail переводит проверку в «не отвечает» сразу, и алерт уходит, не дожидаясь конца grace-периода.
Используйте его, когда задача сама знает, что упала. Например, скрипт вернул код ошибки или в коде вылетело
исключение.
/start статус не меняет. Он нужен, чтобы измерять, сколько работает задача (об этом ниже).
GET или POST
Steadrun принимает оба метода, и разницы между ними нет. Если нужно передать текст, отправляйте его телом POST-запроса:
curl -fsS -m 10 --retry 3 --data-binary "Не удалось подключиться к базе" https://steadrun.ru/ping/ВАШ-UUID/fail
--data-binary отправляет текст как есть. Если читать текст из файла через -d @файл, curl выкинет
переводы строк, и многострочная ошибка склеится в одну строку.
Текст ошибки в алерте
Steadrun сохраняет первые 10 КБ тела пинга, остальное отбрасывает.
- Текст, отправленный на
/fail, приходит прямо в алерте, в Telegram и в письме. Так причину видно сразу, без захода на сервер. - Тело последнего пинга любого типа видно в карточке проверки, в блоке «Тело последнего пинга».
Steadrun оставляет начало текста, а причина падения обычно в конце вывода. Поэтому отправляйте последние
строки. Например, tail -c 10000 оставит последние 10 000 байт. Готовая обёртка, которая так делает, есть в
рецептах.
Время выполнения задачи
Если отправлять /start в начале задачи и обычный пинг в конце, Steadrun посчитает, сколько она работала.
Время видно в ленте событий у каждого пинга. В карточке проверки есть ещё p50 и p95.
- p50 — половина запусков укладывается в это время;
- p95 — 95 из 100 запусков укладываются в это время.
По p95 удобно выбирать grace-период. Возьмите его и добавьте запас.
curl -fsS -m 10 --retry 3 https://steadrun.ru/ping/ВАШ-UUID/start
/home/deploy/backup.sh
curl -fsS -m 10 --retry 3 https://steadrun.ru/ping/ВАШ-UUID
Если задача зависла после /start и до конца не дошла, пинга об успехе не будет. Когда закончится
grace-период, придёт алерт, как и при обычной тишине.
Ответы сервера
| Код | Когда |
|---|---|
| 200 | Пинг принят. Тело ответа пустое |
| 404 | Проверки с таким адресом нет: опечатка в UUID или проверку удалили |
| 429 | Больше 120 пингов в минуту на одну проверку |
С ключом -f curl завершится с ошибкой на 404 и 429, и Вы увидите это в логе задачи. Без -f ошибка пройдёт
незаметно.
Лимит в 120 пингов в минуту защищает от случайного флуда, например когда пинг попал внутрь цикла. Обычной задаче он не мешает, воркеру хватает пинга раз в минуту.
Пинг на проверку, которая стоит на паузе, снимает паузу, и Steadrun снова следит за задачей. Если работающих проверок уже столько, сколько позволяет тариф, пинг сохранится, но пауза останется.
Ключи curl
Во всех примерах в документации пинг отправляется с такими ключами:
curl -fsS -m 10 --retry 3 https://steadrun.ru/ping/ВАШ-UUID
-f— ошибка сервера (404, 429) становится ошибкой curl;-sS— без индикатора загрузки, но с сообщениями об ошибках;-m 10— не ждать дольше 10 секунд, чтобы проблемы с сетью не задерживали задачу;--retry 3— повторить запрос, если сеть ненадолго пропала.
Адрес пинга держите в секрете
Кто знает адрес, тот может слать пинги вместо Вашей задачи. Тогда задача сломается, а Steadrun этого не заметит. Поэтому:
- не публикуйте адрес в открытых репозиториях, храните его в переменных окружения или секретах CI;
- не пересылайте его в общие чаты;
- если адрес утёк, создайте новую проверку и удалите старую.