Типы сигналов
Начало, успех, падение и произвольный лог — что и когда отправлять.
Адрес пинга принимает необязательный суффикс. Он и определяет смысл сигнала.
https://ping.tickwatch.dev/ВАШ-КЛЮЧ # успех
https://ping.tickwatch.dev/ВАШ-КЛЮЧ/start # задача началась
https://ping.tickwatch.dev/ВАШ-КЛЮЧ/fail # задача упала
https://ping.tickwatch.dev/ВАШ-КЛЮЧ/0 # успех, код возврата 0
https://ping.tickwatch.dev/ВАШ-КЛЮЧ/17 # падение, код возврата 17
https://ping.tickwatch.dev/ВАШ-КЛЮЧ/log # просто лог, состояние не меняетсяЗачем сигнал начала
Без него мы знаем только, что задача не отчиталась, но не знаем почему: не запустилась вовсе или запустилась и висит третий час. Сигнал начала разводит эти случаи и включает контроль максимальной длительности.
Тело запроса
Тело POST сохраняется в истории: до 10 КБ на Free и до 100 КБ на платных тарифах. Запрос больше 100 КБ отклоняется с HTTP 413. В уведомление о падении попадает только хвост сохранённого лога, ограниченный форматом канала. Отправляйте последние строки вывода без секретов.
/path/to/job.sh 2>&1 | tail -c 10000 | curl -fsS --data-binary @- https://ping.tickwatch.dev/ВАШ-КЛЮЧПараллельные запуски
Для каждого параллельного запуска создайте новый UUID и передавайте одинаковый rid в /start, /log и финальном пинге. У каждого запуска будут своя длительность и таймер. Успех одного не снимет тревогу о другом, превысившем максимальную длительность. Неверный или пустой rid возвращает HTTP 400.
RID=$(uuidgen)
curl -fsS "https://ping.tickwatch.dev/ВАШ-КЛЮЧ/start?rid=$RID"
/path/to/job.sh
CODE=$?
curl -fsS "https://ping.tickwatch.dev/ВАШ-КЛЮЧ/$CODE?rid=$RID"Повторный /start с тем же rid не продлевает таймер; повторный финал не учитывается как новая ошибка. Используйте новый rid для следующего запуска. Без rid сохраняется режим одного запуска: такой финал не завершает запуск с идентификатором. Сведения о rid хранятся в пределах истории тарифа; незавершённый запуск с большей разрешённой длительностью хранится до окончания этого срока и ещё час.